Method and system for rendering data for addressable dispensing

ABSTRACT

A method of rendering data for addressable dispensing of material over a working surface, comprises: receiving input image data arranged grid-wise over a plurality of picture-elements; generating an initial map describing a distance field and having a plurality of map-elements each storing distance information corresponding to one picture-element; for each picture-element of at least a portion of the picture-elements: linearly scanning the map independently along a first axis and along a second axis, and updating a respective map-element based on values of map-elements visited during the scan. The distance field can include distances defined perpendicularly to the working surface.

RELATED APPLICATIONS

This application is a Division of U.S. patent application Ser. No.16/642,900 filed on Feb. 28, 2020, which is a National Phase of PCTPatent Application No. PCT/IL2018/050946 having International FilingDate of Aug. 27, 2018, which claims the benefit of priority under 35 USC§ 119(e) of U.S. Provisional Patent Application No. 62/551,279 filed onAug. 29, 2017. The contents of the above applications are allincorporated by reference as if fully set forth herein in theirentirety.

FIELD AND BACKGROUND OF THE INVENTION

The present invention, in some embodiments thereof, relates to datarendering and, more particularly, but not exclusively, to a method andsystem for addressable dispensing of, for example, ink or buildingmaterial.

Additive manufacturing (AM) is a technology enabling fabrication ofarbitrarily shaped structures directly from computer data via additiveformation steps. The basic operation of any AM system consists ofslicing a three-dimensional computer model into thin cross sections,translating the result into two-dimensional position data and feedingthe data to control equipment which fabricates a three-dimensionalstructure in a layerwise manner.

Additive manufacturing entails many different approaches to the methodof fabrication, including three-dimensional (3D) printing such as 3Dinkjet printing, electron beam melting, stereolithography, selectivelaser sintering, laminated object manufacturing, fused depositionmodeling and others.

Some 3D printing processes, for example, 3D inkjet printing, are beingperformed by a layer by layer inkjet deposition of building materials.Thus, a building material is dispensed from a dispensing head having aset of nozzles to deposit layers on a supporting structure. Depending onthe building material, the layers may then be cured or solidified usinga suitable device.

Various three-dimensional printing techniques exist and are disclosedin, e.g., U.S. Pat. Nos. 6,259,962, 6,569,373, 6,658,314, 6,850,334,6,863,859, 7,183,335, 7,209,797, 7,225,045, 7,300,619, 7,500,846 and9,031,680, all by the same Assignee, and being hereby incorporated byreference in their entirety.

SUMMARY OF THE INVENTION

According to an aspect of some embodiments of the present inventionthere is provided a method of rendering data for addressable dispensingof material over a working surface. The method comprises: receivinginput image data arranged grid-wise over a plurality ofpicture-elements; generating an initial map describing a distance fieldand having a plurality of map-elements each storing distance informationcorresponding to one picture-element; for each picture-element of atleast a portion of the picture-elements: linearly scanning the mapindependently along a first axis and along a second axis, and updating arespective map-element based on values of map-elements visited duringthe scan. According to some preferred embodiments of the presentinvention the distance field includes distances defined perpendicularlyto the working surface.

According to some embodiments of the invention the generation of theinitial map is by a first processor, and the scanning and the updatingis by a second processor.

According to some embodiments of the invention the method wherein thefirst processor is a graphics processing unit (GPU) and the wherein thesecond processor is a central processing unit (CPU) of the same computersystem.

According to some embodiments of the invention the first and the secondaxes are orthogonal axes.

According to some embodiments of the invention the distance informationis according to a taxicab metric.

According to some embodiments of the invention the distance informationis according to a Euclidian metric.

According to some embodiments of the invention the grid is atwo-dimensional grid describing coordinates of picture-elements of atwo-dimensional image.

According to some embodiments of the invention the generation of theinitial map comprises setting one of two predetermined values for eachmap-element, wherein a first value of the two predetermined values isset when a respective picture-element is on a boundary of an object inthe image, and a second value of the two predetermined values is setotherwise.

According to some embodiments of the invention the method comprises, foreach picture-element of at least a portion of the picture-elements,designating a material to be dispensed based at least in part on arespective map-element, generating dispensing instructions readable by acontroller of a printer based on the designation and transmitting thedispensing instructions to the controller.

According to some embodiments of the invention the grid is athree-dimensional grid describing coordinates of picture-elements of athree-dimensional image.

According to some embodiments of the invention the generation of theinitial map comprises setting, for each map-element, a valuecorresponding to a height of a respective picture-element in the image,the height being along a third axis perpendicular to both the first andthe second axes.

According to some embodiments of the invention the method comprises, foreach picture-element of at least a portion of the picture-elements,designating a material to be dispensed based at least in part on arespective map-element, generating dispensing instructions readable by acontroller of a printer, based on the designation, and transmitting thedispensing instructions to the controller.

According to some embodiments of the invention the method comprisesslicing the input image data, wherein the generating, the scanning andthe updating are executed separately for each slice, to form a sub-mapcorresponding only to picture-element of the slice.

According to some embodiments of the invention the method comprises, forat least one sub-map, designating, for each picture-element of at leasta portion of picture-elements corresponding to the sub-map, a materialto be dispensed based at least in part on a respective map-element ofthe sub-map, generating dispensing instructions readable by a controllerof a printer based on the designation, and transmitting the dispensinginstructions to the controller.

According to some embodiments of the invention the invention the methodcomprises purging the sub-map from a memory following the generation ofthe material bitmap.

According to some embodiments of the invention the designation isaccording to a modulating function.

According to some embodiments of the invention the modulating functionis selected from the group consisting of a noise function, a simplexnoise function, an open simplex noise function, a Worley noise function,a Perlin noise function, a wavelet noise function, a periodic functionand an aperiodic function.

According to an aspect of some embodiments of the present inventionthere is provided a method of additive manufacturing an object. Themethod comprises: executing a method of rendering data for addressabledispensing of material over a working surface as delineated above andoptionally and preferably as further detailed hereinbelow; anddispensing and solidifying a plurality of materials based on thedispensing instructions to sequentially form a plurality of hardenedlayers in a configured pattern corresponding to a shape of an object.

According to an aspect of some embodiments of the present inventionthere is provided a system for rendering data for addressable dispensingof material over a working surface. The system comprises: an inputcircuit for receiving input image data arranged grid-wise over aplurality of picture-elements; a first processor configured forgenerating an initial map describing a distance field and having aplurality of map-elements each storing distance informationcorresponding to one picture-element; and a second processor configuredfor linearly scanning the map, independently along a first axis andalong a second axis, for each picture-element of at least a portion ofthe picture-elements, and for updating a respective map-element based onvalues of map-elements visited during the scan. According to somepreferred embodiments of the present invention the distance fieldincludes distances defined perpendicularly to the working surface.

According to some embodiments of the invention the first processor is agraphics processing unit (GPU) and the wherein the second processor is acentral processing unit (CPU) of the same computer system.

According to an aspect of some embodiments of the present inventionthere is provided a system for three-dimensional printing of an object.The system comprises: a system for rendering data for addressabledispensing of material over a working surface as delineated above andoptionally and preferably as further detailed hereinbelow; athree-dimensional fabrication apparatus having a plurality of dispensingheads configured to dispense building materials; a controller designedand constructed to receive the dispensing instructions and to operatethe dispensing heads according to the material bitmap.

Unless otherwise defined, all technical and/or scientific terms usedherein have the same meaning as commonly understood by one of ordinaryskill in the art to which the invention pertains. Although methods andmaterials similar or equivalent to those described herein can be used inthe practice or testing of embodiments of the invention, exemplarymethods and/or materials are described below. In case of conflict, thepatent specification, including definitions, will control. In addition,the materials, methods, and examples are illustrative only and are notintended to be necessarily limiting.

Implementation of the method and/or system of embodiments of theinvention can involve performing or completing selected tasks manually,automatically, or a combination thereof. Moreover, according to actualinstrumentation and equipment of embodiments of the method and/or systemof the invention, several selected tasks could be implemented byhardware, by software or by firmware or by a combination thereof usingan operating system.

For example, hardware for performing selected tasks according toembodiments of the invention could be implemented as a chip or acircuit. As software, selected tasks according to embodiments of theinvention could be implemented as a plurality of software instructionsbeing executed by a computer using any suitable operating system. In anexemplary embodiment of the invention, one or more tasks according toexemplary embodiments of method and/or system as described herein areperformed by a data processor, such as a computing platform forexecuting a plurality of instructions. Optionally, the data processorincludes a volatile memory for storing instructions and/or data and/or anon-volatile storage, for example, a magnetic hard-disk and/or removablemedia, for storing instructions and/or data. Optionally, a networkconnection is provided as well. A display and/or a user input devicesuch as a keyboard or mouse are optionally provided as well.

BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS

The patent or application file contains at least one drawing executed incolor. Copies of this patent or patent application publication withcolor drawing(s) will be provided by the Office upon request and paymentof the necessary fee.

Some embodiments of the invention are herein described, by way ofexample only, with reference to the accompanying drawings and images.With specific reference now to the drawings in detail, it is stressedthat the particulars shown are by way of example and for purposes ofillustrative discussion of embodiments of the invention. In this regard,the description taken with the drawings makes apparent to those skilledin the art how embodiments of the invention may be practiced.

In the drawings:

FIGS. 1A-1D are schematic illustrations of an additive manufacturingsystem according to some embodiments of the invention.

FIGS. 2A-2C are schematic illustrations of printing heads according tosome embodiments of the present invention.

FIGS. 3A and 3B are schematic illustrations demonstrating coordinatetransformations according to some embodiments of the present invention.

FIG. 4 is a flowchart diagram of a method particularly useful forrendering data, according to some embodiments of the present invention.

FIG. 5 is a schematic illustration of linear scanning according to someembodiments of the present invention.

FIG. 6 is a flowchart diagram describing a method suitable forgenerating dispensing instructions for use by a dispensing system,according to some embodiments of the present invention.

FIG. 7 is a flowchart diagram that describes a preferred proceduresuitable for generating a material bitmap, according to some embodimentsof the present invention.

FIG. 8 is a flowchart diagram that describes a method suitable forgenerating a closest point map or sub-map according to some embodimentsof the present invention.

FIGS. 9A-9C are schematic illustrations of systems suitable forfabricating a three-dimensional object using material assignment basedon distance fields.

FIG. 10 is a block diagram of an example computer architecture which canbe used according to some embodiments of the present invention.

FIG. 11 is a flow diagram of a method of converting a 3D model intoprint instructions and printing a 3D part.

FIG. 12 is a block diagram of elements used in the method of FIG. 11 .

FIG. 13 is a perspective view of a portion of a part showing texture anda bump.

FIG. 14 is a perspective view of a build space with an oriented part.

FIG. 15 is a method of determining a distance field value.

FIG. 16 is a top view of a slice in the build space showing thedetermination of a distance field value.

FIG. 17 is a flow diagram of a method of performing initial steps ofmaterial selection.

FIG. 18 provides a side view of a part showing different supportregions.

FIG. 19 provides a method of selecting a material for a voxel when thereis only one part.

FIG. 20 provides a method of selecting a material for a voxel when thereare multiple parts in the build space.

FIG. 21 provides a sectional view of a part constructed through thevarious embodiments showing a single part in the build space.

FIG. 22 provides a side view of two parts showing the removal ofinterference through the selection of a single part's material selectionrules.

FIG. 23 shows a merged area where two different modulating functions aremerged together.

FIG. 24 shows a merged area where two different materials are mergedtogether.

FIGS. 25A and 25B show an input image (FIG. 25A), and a correspondingdistance map (FIG. 25B) generated by two independent linear scans usedin experiments performed according to embodiments of the presentinvention.

FIGS. 26A-26B are schematic illustrations explaining a minimization ofan objective function used in experiments performed according to someembodiments of the present invention;

FIGS. 27A-27E show results obtained during experiments performedaccording to some embodiments of the present invention in which a methodfor generating a distance map was applied to a three-dimensional imagehaving 4 squares at ground level and a horizontal bar at a distance of10 voxels above the ground level.

FIG. 28 is a graphical illustration of a closest point map generated inexperiments performed according to some embodiments of the presentinvention.

DESCRIPTION OF SPECIFIC EMBODIMENTS OF THE INVENTION

The present invention, in some embodiments thereof, relates to datarendering and, more particularly, but not exclusively, to a method andsystem for addressable dispensing of, for example, ink or buildingmaterial.

Before explaining at least one embodiment of the invention in detail, itis to be understood that the invention is not necessarily limited in itsapplication to the details of construction and the arrangement of thecomponents and/or methods set forth in the following description and/orillustrated in the drawings and/or the Examples. The invention iscapable of other embodiments or of being practiced or carried out invarious ways.

The method and system of the present embodiments manufacturethree-dimensional objects based on computer object data in a layerwisemanner by forming a plurality of layers in a configured patterncorresponding to the shape of the objects. The computer object data istypically arranged in datasets known as “slices” wherein each sliceincludes computer object data which is readable by the controller of theAM system and which include fabrication instructions for forming onelayer of the object.

The term “object” as used herein refers to a whole object or a partthereof.

The computer object data can be in any known format, including, withoutlimitation, a

Standard Tessellation Language (STL) or a StereoLithography Contour(SLC) format, Virtual Reality Modeling Language (VRML), AdditiveManufacturing File (AMF) format, Drawing Exchange Format (DXF), PolygonFile Format (PLY) or any other format suitable for Computer-Aided Design(CAD).

Each layer is formed by additive manufacturing apparatus which scans atwo-dimensional surface and patterns it. While scanning, the apparatusvisits a plurality of target locations on the two-dimensional layer orsurface, and decides, for each target location or a group of targetlocations, whether or not the target location or group of targetlocations is to be occupied by building material formulation, and whichtype of building material formulation is to be delivered thereto. Thedecision is made according to a computer image of the surface.

In preferred embodiments of the present invention the AM comprisesthree-dimensional printing, more preferably three-dimensional inkjetprinting. In these embodiments a building material formulation isdispensed from a dispensing head having a set of nozzles to depositbuilding material formulation in layers on a supporting structure. TheAM apparatus thus dispenses building material formulation in targetlocations which are to be occupied and leaves other target locationsvoid. The apparatus typically includes a plurality of dispensing heads,each of which can be configured to dispense a different buildingmaterial formulation. Thus, different target locations can be occupiedby different building material formulations. The types of buildingmaterial formulations can be categorized into two major categories:modeling material formulation and support material formulation. Thesupport material formulation serves as a supporting matrix orconstruction for supporting the object or object parts during thefabrication process and/or other purposes, e.g., providing hollow orporous objects. Support constructions may additionally include modelingmaterial formulation elements, e.g. for further support strength.

The modeling material formulation is generally a composition which isformulated for use in additive manufacturing and which is able to form athree-dimensional object on its own, i.e., without having to be mixed orcombined with any other substance.

Herein throughout, the phrase “uncured building material” collectivelydescribes the materials that are dispensed during the fabricationprocess so as to sequentially form the layers, as described herein. Thisphrase encompasses uncured materials (also referred to herein asbuilding material formulation(s) dispensed so as to form the printedobject, namely, one or more uncured modeling material formulation(s),and uncured materials dispensed so as to form the support, namelyuncured support material formulations.

Herein, the dispensed materials are also referred to collectively as“material formulations”. The material formulations provide, typicallywhen hardened (unless indicated otherwise), typically hardened uponexposure to a curing condition as defined herein (unless indicatedotherwise), to form a respective material.

Herein throughout, the phrases “cured modeling material” and “hardenedmodeling material”, which are used interchangeably, describe the part ofthe building material that forms a model object, as defined herein, uponexposing the dispensed building material to curing, and followingremoval of the support material. The cured or hardened modeling materialcan be a single hardened material or a mixture of two or more hardenedmaterials, depending on the modeling material formulations used in themethod, as described herein.

Herein throughout, the phrase “modeling material formulation”, which isalso referred to herein interchangeably as “modeling formulation”,describes a part of the uncured building material which is dispensed soas to form the model object, as described herein. The modelingformulation is an uncured modeling formulation, which, upon exposure toa curing condition, forms the final object or a part thereof.

An uncured building material can comprise one or more modelingformulations, and can be dispensed such that different parts of themodel object are made upon curing different modeling formulations, andhence are made of different cured modeling materials or differentmixtures of cured modeling materials.

Herein throughout, the phrase “hardened support material” is alsoreferred to herein interchangeably as “cured support material” or simplyas “support material” and describes the part of the building materialthat is intended to support the fabricated final object during thefabrication process, and which is removed once the process is completedand a hardened modeling material is obtained.

Herein throughout, the phrase “support material formulation”, which isalso referred to herein interchangeably as “support formulation” orsimply as “formulation”, describes a part of the uncured buildingmaterial which is dispensed so as to form the support material, asdescribed herein. The support material formulation is an uncuredformulation. When a support material formulation is a curableformulation, it forms, upon exposure to a curing condition, a hardenedsupport material.

Support materials, which can be either liquid materials or hardened,typically gel materials, are also referred to herein as sacrificialmaterials, which are removable after layers are dispensed and exposed toa curing energy, to thereby expose the shape of the final object.

Herein and in the art, the term “gel” describes a material, oftenreferred to as a semi-solid material, which comprises athree-dimensional solid network, typically made of fibrous structureschemically or physically linked therebetween, and a liquid phase encagedwithin this network. Gels are typically characterized by a consistencyof a solid (e.g., are non-fluidic), and feature relatively low Tensilestrength, relatively low Shear Modulus, e.g., lower than 100 kPa, and aShear Loss Modulus to Shear Storage modulus (tan delta, G″/G′) valuelower than 1. Gels can be characterized as flowable when subjected to apositive pressure of at least 0.5 bar, preferably at least 1 bar, orhigher, or, alternatively, as non-flowable when subject to a pressurelower than 1 bar or lower than 0.5 bar or of 0.3 bar or lower.

Currently practiced support materials typically comprise a mixture ofcurable and non-curable materials, and are also referred to herein asgel support material.

Currently practiced support materials are typically water miscible, orwater-dispersible or water-soluble.

Herein throughout, the term “water-miscible” describes a material whichis at least partially dissolvable or dispersible in water, that is, atleast 50% of the molecules move into the water upon mixture. This termencompasses the terms “water-soluble” and “water dispersible”.

Herein throughout, the term “water-soluble” describes a material thatwhen mixed with water in equal volumes or weights, a homogeneoussolution is formed.

Herein throughout, the term “water-dispersible” describes a materialthat forms a homogeneous dispersion when mixed with water in equalvolumes or weights.

Herein throughout, the phrase “dissolution rate” describes a rate atwhich a substance is dissolved in a liquid medium. Dissolution rate canbe determined, in the context of the present embodiments, by the timeneeded to dissolve a certain amount of a support material. The measuredtime is referred to herein as “dissolution time”.

The final three-dimensional object is made of the modeling materials ora combination of modeling materials or modeling and support materials ormodification thereof (e.g., following curing). All these operations arewell-known to those skilled in the art of solid freeform fabrication.

In some exemplary embodiments of the invention an object is manufacturedby dispensing two or more different modeling material formulations, eachmaterial formulation from a different dispensing head of the AM. Thematerial formulations are optionally and preferably deposited in layersduring the same pass of the printing heads. The material formulationsand combination of material formulations within the layer are selectedaccording to the desired properties of the object.

A representative and non-limiting example of a system 110 suitable forAM of an object 112 according to some embodiments of the presentinvention is illustrated in FIG. 1A. System 110 comprises an additivemanufacturing apparatus 114 having a dispensing unit 16 which comprisesa plurality of dispensing heads. Each head preferably comprises an arrayof one or more nozzles 122, as illustrated in FIGS. 2A-C describedbelow, through which a liquid building material formulation 124 isdispensed.

Preferably, but not obligatorily, apparatus 114 is a three-dimensionalprinting apparatus, in which case the dispensing heads are printingheads, and the building material formulation is dispensed via inkjettechnology. This need not necessarily be the case, since, for someapplications, it may not be necessary for the additive manufacturingapparatus to employ three-dimensional printing techniques.Representative examples of additive manufacturing apparatus contemplatedaccording to various exemplary embodiments of the present inventioninclude, without limitation, fused deposition modeling apparatus andfused material formulation deposition apparatus.

Each dispensing head is optionally and preferably fed via a buildingmaterial formulation reservoir which may optionally include atemperature control unit (e.g., a temperature sensor and/or a heatingdevice), and a material formulation level sensor. To dispense thebuilding material formulation, a voltage signal is applied to thedispensing heads to selectively deposit droplets of material formulationvia the dispensing head nozzles, for example, as in piezoelectric inkjetprinting technology. The dispensing rate of each head depends on thenumber of nozzles, the type of nozzles and the applied voltage signalrate (frequency). Such dispensing heads are known to those skilled inthe art of solid freeform fabrication.

Preferably, but not obligatorily, the overall number of dispensingnozzles or nozzle arrays is selected such that half of the dispensingnozzles are designated to dispense support material formulation and halfof the dispensing nozzles are designated to dispense modeling materialformulation, i.e. the number of nozzles jetting modeling materialformulations is the same as the number of nozzles jetting supportmaterial formulation. In the representative example of FIG. 1A, fourdispensing heads 16 a, 16 b, 16 c and 16 d are illustrated. Each ofheads 16 a, 16 b, 16 c and 16 d has a nozzle array. In this Example,heads 16 a and 16 b can be designated for modeling materialformulation/s and heads 16 c and 16 d can be designated for supportmaterial formulation. Thus, head 16 a can dispense a first modelingmaterial formulation, head 16 b can dispense a second modeling materialformulation and heads 16 c and 16 d can both dispense support materialformulation. In an alternative embodiment, heads 16 c and 16 d, forexample, may be combined in a single head having two nozzle arrays fordepositing support material formulation.

Yet it is to be understood that it is not intended to limit the scope ofthe present invention and that the number of modeling materialformulation depositing heads (modeling heads) and the number of supportmaterial formulation depositing heads (support heads) may differ.Generally, the number of modeling heads, the number of support heads andthe number of nozzles in each respective head or head array are selectedsuch as to provide a predetermined ratio, a, between the maximaldispensing rate of the support material formulation and the maximaldispensing rate of modeling material formulation. The value of thepredetermined ratio, a, is preferably selected to ensure that in eachformed layer, the height of modeling material formulation equals theheight of support material formulation. Typical values for a are fromabout 0.6 to about 1.5.

As used herein the term “about” refers to ±10%.

For example, for a=1, the overall dispensing rate of support materialformulation is generally the same as the overall dispensing rate of themodeling material formulation when all modeling heads and support headsoperate.

In a preferred embodiment, there are M modeling heads each having marrays of p nozzles, and S support heads each having s arrays of qnozzles such that M×m×p=S×s×q. Each of the M×m modeling arrays and S×ssupport arrays can be manufactured as a separate physical unit, whichcan be assembled and disassembled from the group of arrays. In thisembodiment, each such array optionally and preferably comprises atemperature control unit and a material formulation level sensor of itsown, and receives an individually controlled voltage for its operation.

Apparatus 114 can further comprise a solidifying device 324 which caninclude any device configured to emit light, heat or the like that maycause the deposited material formulation to hardened. For example,solidifying device 324 can comprise one or more radiation sources, whichcan be, for example, an ultraviolet or visible or infrared lamp, orother sources of electromagnetic radiation, or electron beam source,depending on the modeling material formulation being used. In someembodiments of the present invention, solidifying device 324 serves forcuring or solidifying the modeling material formulation.

The dispensing head and radiation source are preferably mounted in aframe or block 128 which is preferably operative to reciprocally moveover a tray 360, which serves as the working surface. In someembodiments of the present invention the radiation sources are mountedin the block such that they follow in the wake of the dispensing headsto at least partially cure or solidify the material formulations justdispensed by the dispensing heads. Tray 360 is positioned horizontally.According to the common conventions an X-Y-Z Cartesian coordinate systemis selected such that the X-Y plane is parallel to tray 360. Tray 360 ispreferably configured to move vertically (along the Z direction),typically downward. In various exemplary embodiments of the invention,apparatus 114 further comprises one or more leveling devices 132, e.g. aroller 326. Leveling device 326 serves to straighten, level and/orestablish a thickness of the newly formed layer prior to the formationof the successive layer thereon. Leveling device 326 preferablycomprises a waste collection device 136 for collecting the excessmaterial formulation generated during leveling. Waste collection device136 may comprise any mechanism that delivers the material formulation toa waste tank or waste cartridge.

In use, the dispensing heads of unit 16 move in a scanning direction,which is referred to herein as the X direction, and selectively dispensebuilding material formulation in a predetermined configuration in thecourse of their passage over tray 360. The building material formulationtypically comprises one or more types of support material formulationand one or more types of modeling material formulation. The passage ofthe dispensing heads of unit 16 is followed by the curing of themodeling material formulation(s) by radiation source 126. In the reversepassage of the heads, back to their starting point for the layer justdeposited, an additional dispensing of building material formulation maybe carried out, according to predetermined configuration. In the forwardand/or reverse passages of the dispensing heads, the layer thus formedmay be straightened by leveling device 326, which preferably follows thepath of the dispensing heads in their forward and/or reverse movement.Once the dispensing heads return to their starting point along the Xdirection, they may move to another position along an indexingdirection, referred to herein as the Y direction, and continue to buildthe same layer by reciprocal movement along the X direction.Alternately, the dispensing heads may move in the Y direction betweenforward and reverse movements or after more than one forward-reversemovement. The series of scans performed by the dispensing heads tocomplete a single layer is referred to herein as a single scan cycle.

Once the layer is completed, tray 360 is lowered in the Z direction to apredetermined Z level, according to the desired thickness of the layersubsequently to be printed. The procedure is repeated to formthree-dimensional object 112 in a layerwise manner.

In another embodiment, tray 360 may be displaced in the Z directionbetween forward and reverse passages of the dispensing head of unit 16,within the layer. Such Z displacement is carried out in order to causecontact of the leveling device with the surface in one direction andprevent contact in the other direction.

System 110 optionally and preferably comprises a building materialformulation supply system 330 which comprises the building materialformulation containers or cartridges and supplies a plurality ofbuilding material formulations to fabrication apparatus 114.

A control unit 340 controls fabrication apparatus 114 and optionally andpreferably also supply system 330. Control unit 340 typically includesan electronic circuit configured to perform the controlling operations.Control unit 340 preferably communicates with a data processor 154 whichtransmits digital data pertaining to fabrication instructions based oncomputer object data, e.g., a CAD configuration represented on acomputer readable medium in a form of a Standard Tessellation Language(STL) format or the like. Typically, control unit 340 controls thevoltage applied to each dispensing head or nozzle array and thetemperature of the building material formulation in the respectiveprinting head.

Once the manufacturing data is loaded to control unit 340 it can operatewithout user intervention. In some embodiments, control unit 340receives additional input from the operator, e.g., using data processor154 or using a user interface 116 communicating with unit 340. Userinterface 116 can be of any type known in the art, such as, but notlimited to, a keyboard, a touch screen and the like. For example,control unit 340 can receive, as additional input, one or more buildingmaterial formulation types and/or attributes, such as, but not limitedto, color, characteristic distortion and/or transition temperature,viscosity, electrical property, magnetic property. Other attributes andgroups of attributes are also contemplated.

Another representative and non-limiting example of a system 10 suitablefor AM of an object according to some embodiments of the presentinvention is illustrated in FIGS. 1B-D. FIGS. 1B-D illustrate a top view(FIG. 1B), a side view (FIG. 1C) and an isometric view (FIG. 1D) ofsystem 10.

In the present embodiments, system 10 comprises a tray 12 and aplurality of inkjet printing heads 16, each having a plurality ofseparated nozzles. Tray 12 can have a shape of a disk or it can beannular. Non-round shapes are also contemplated, provided they can berotated about a vertical axis.

Tray 12 and heads 16 are optionally and preferably mounted such as toallow a relative rotary motion between tray 12 and heads 16. This can beachieved by (i) configuring tray 12 to rotate about a vertical axis 14relative to heads 16, (ii) configuring heads 16 to rotate about verticalaxis 14 relative to tray 12, or (iii) configuring both tray 12 and heads16 to rotate about vertical axis 14 but at different rotation velocities(e.g., rotation at opposite direction). While the embodiments below aredescribed with a particular emphasis to configuration (i) wherein thetray is a rotary tray that is configured to rotate about vertical axis14 relative to heads 16, it is to be understood that the presentapplication contemplates also configurations (ii) and (iii). Any one ofthe embodiments described herein can be adjusted to be applicable to anyof configurations (ii) and (iii), and one of ordinary skills in the art,provided with the details described herein, would know how to make suchadjustment.

In the following description, a direction parallel to tray 12 andpointing outwardly from axis 14 is referred to as the radial directionr, a direction parallel to tray 12 and perpendicular to the radialdirection r is referred to herein as the azimuthal direction φ, and adirection perpendicular to tray 12 is referred to herein is the verticaldirection z.

The term “radial position,” as used herein, refers to a position on orabove tray 12 at a specific distance from axis 14. When the term is usedin connection to a printing head, the term refers to a position of thehead which is at specific distance from axis 14. When the term is usedin connection to a point on tray 12, the term corresponds to any pointthat belongs to a locus of points that is a circle whose radius is thespecific distance from axis 14 and whose center is at axis 14.

The term “azimuthal position,” as used herein, refers to a position onor above tray 12 at a specific azimuthal angle relative to apredetermined reference point. Thus, radial position refers to any pointthat belongs to a locus of points that is a straight line forming thespecific azimuthal angle relative to the reference point.

The term “vertical position,” as used herein, refers to a position overa plane that intersect the vertical axis 14 at a specific point.

Tray 12 serves as a supporting structure for three-dimensional printing.The working area on which one or objects are printed is typically, butnot necessarily, smaller than the total area of tray 12. In someembodiments of the present invention the working area is annular. Theworking area is shown at 26. In some embodiments of the presentinvention tray 12 rotates continuously in the same direction throughoutthe formation of object, and in some embodiments of the presentinvention tray reverses the direction of rotation at least once (e.g.,in an oscillatory manner) during the formation of the object. Tray 12 isoptionally and preferably removable. Removing tray 12 can be formaintenance of system 10, or, if desired, for replacing the tray beforeprinting a new object. In some embodiments of the present inventionsystem 10 is provided with one or more different replacement trays(e.g., a kit of replacement trays), wherein two or more trays aredesignated for different types of objects (e.g., different weights)different operation modes (e.g., different rotation speeds), etc. Thereplacement of tray 12 can be manual or automatic, as desired. Whenautomatic replacement is employed, system 10 comprises a trayreplacement device 36 configured for removing tray 12 from its positionbelow heads 16 and replacing it by a replacement tray (not shown). Inthe representative illustration of FIG. 1B tray replacement device 36 isillustrated as a drive 38 with a movable arm 40 configured to pull tray12, but other types of tray replacement devices are also contemplated.

Exemplified embodiments for the printing head 16 are illustrated inFIGS. 2A-2C. These embodiments can be employed for any of the AM systemsdescribed above, including, without limitation, system 110 and system10.

FIGS. 2A-B illustrate a printing head 16 with one (FIG. 2A) and two(FIG. 2B) nozzle arrays 22. The nozzles in the array are preferablyaligned linearly, along a straight line. In embodiments in which aparticular printing head has two or more linear nozzle arrays, thenozzle arrays are optionally and preferably can be parallel to eachother.

When a system similar to system 110 is employed, all printing heads 16are optionally and preferably oriented along the indexing direction withtheir positions along the scanning direction being offset to oneanother.

When a system similar to system 10 is employed, all printing heads 16are optionally and preferably oriented radially (parallel to the radialdirection) with their azimuthal positions being offset to one another.Thus, in these embodiments, the nozzle arrays of different printingheads are not parallel to each other but are rather at an angle to eachother, which angle being approximately equal to the azimuthal offsetbetween the respective heads. For example, one head can be orientedradially and positioned at azimuthal position φ₁, and another head canbe oriented radially and positioned at azimuthal position φ₂. In thisexample, the azimuthal offset between the two heads is φ₁−φ₂, and theangle between the linear nozzle arrays of the two heads is also φ₁−φ₂.

In some embodiments, two or more printing heads can be assembled to ablock of printing heads, in which case the printing heads of the blockare typically parallel to each other. A block including several inkjetprinting heads 16 a, 16 b, 16 c is illustrated in FIG. 2C.

In some embodiments, system 10 comprises a support structure 30positioned below heads 16 such that tray 12 is between support structure30 and heads 16. Support structure 30 may serve for preventing orreducing vibrations of tray 12 that may occur while inkjet printingheads 16 operate. In configurations in which printing heads 16 rotateabout axis 14, support structure 30 preferably also rotates such thatsupport structure 30 is always directly below heads 16 (with tray 12between heads 16 and tray 12).

Tray 12 and/or printing heads 16 is optionally and preferably configuredto move along the vertical direction z, parallel to vertical axis 14 soas to vary the vertical distance between tray 12 and printing heads 16.In configurations in which the vertical distance is varied by movingtray 12 along the vertical direction, support structure 30 preferablyalso moves vertically together with tray 12. In configurations in whichthe vertical distance is varied by heads 16 along the verticaldirection, while maintaining the vertical position of tray 12 fixed,support structure 30 is also maintained at a fixed vertical position.

The vertical motion can be established by a vertical drive 28. Once alayer is completed, the vertical distance between tray 12 and heads 16can be increased (e.g., tray 12 is lowered relative to heads 16) by apredetermined vertical step, according to the desired thickness of thelayer subsequently to be printed. The procedure is repeated to form athree-dimensional object in a layerwise manner.

The operation of inkjet printing heads 16 and optionally and preferablyalso of one or more other components of system 10, e.g., the motion oftray 12, are controlled by a controller 20. The controller can have anelectronic circuit and a non-volatile memory medium readable by thecircuit, wherein the memory medium stores program instructions which,when read by the circuit, cause the circuit to perform controloperations as further detailed below.

Controller 20 can also communicate with a host computer 24 whichtransmits digital data pertaining to fabrication instructions based oncomputer object data, e.g., in a form of a Standard TessellationLanguage (STL) or a StereoLithography Contour (SLC) format, VirtualReality Modeling Language (VRML), Additive Manufacturing File (AMF)format, Drawing Exchange Format (DXF), Polygon File Format (PLY) or anyother format suitable for Computer-Aided Design (CAD). The object dataformats are typically structured according to a Cartesian system ofcoordinates. In these cases, computer 24 preferably executes a procedurefor transforming the coordinates of each slice in the computer objectdata from a Cartesian system of coordinates into a polar system ofcoordinates. Computer 24 optionally and preferably transmits thefabrication instructions in terms of the transformed system ofcoordinates. Alternatively, computer 24 can transmit the fabricationinstructions in terms of the original system of coordinates as providedby the computer object data, in which case the transformation ofcoordinates is executed by the circuit of controller 20.

The transformation of coordinates allows three-dimensional printing overa rotating tray. In conventional three-dimensional printing, theprinting heads reciprocally move above a stationary tray along straightlines. In such conventional systems, the printing resolution is the sameat any point over the tray, provided the dispensing rates of the headsare uniform. Unlike conventional three-dimensional printing, not all thenozzles of the head points cover the same distance over tray 12 duringat the same time. The transformation of coordinates is optionally andpreferably executed so as to ensure equal amounts of excess materialformulation at different radial positions. Representative examples ofcoordinate transformations according to some embodiments of the presentinvention are provided in FIGS. 3A-B, showing a slice of an object (eachslice corresponds to fabrication instructions of a different layer ofthe objects), where FIG. 3A illustrates the slice in a Cartesian systemof coordinates and FIG. 3B illustrates the same slice following anapplication of a transformation of coordinates procedure to therespective slice.

Typically, controller 20 controls the voltage applied to the respectivecomponent of the system 10 based on the fabrication instructions andbased on the stored program instructions as described below.

Generally, controller 20 controls printing heads 16 to dispense, duringthe rotation of tray 12, droplets of building material formulation inlayers, such as to print a three-dimensional object on tray 12.

System 10 optionally and preferably comprises one or more radiationsources 18, which can be, for example, an ultraviolet or visible orinfrared lamp, or other sources of electromagnetic radiation, orelectron beam source, depending on the modeling material formulationbeing used. Radiation source can include any type of radiation emittingdevice, including, without limitation, light emitting diode (LED),digital light processing (DLP) system, resistive lamp and the like.Radiation source 18 serves for curing or solidifying the modelingmaterial formulation. In various exemplary embodiments of the inventionthe operation of radiation source 18 is controlled by controller 20which may activate and deactivate radiation source 18 and may optionallyalso control the amount of radiation generated by radiation source 18.

In some embodiments of the invention, system 10 further comprises one ormore leveling devices 32 which can be manufactured as a roller or ablade. Leveling device 32 serves to straighten the newly formed layerprior to the formation of the successive layer thereon. In someembodiments, leveling device 32 has the shape of a conical rollerpositioned such that its symmetry axis 34 is tilted relative to thesurface of tray 12 and its surface is parallel to the surface of thetray. This embodiment is illustrated in the side view of system 10 (FIG.1C).

The conical roller can have the shape of a cone or a conical frustum.

The opening angle of the conical roller is preferably selected such thatis a constant ratio between the radius of the cone at any location alongits axis 34 and the distance between that location and axis 14. Thisembodiment allows roller 32 to efficiently level the layers, since whilethe roller rotates, any point p on the surface of the roller has alinear velocity which is proportional (e.g., the same) to the linearvelocity of the tray at a point vertically beneath point p. In someembodiments, the roller has a shape of a conical frustum having a heighth, a radius R₁ at its closest distance from axis 14, and a radius R₂ atits farthest distance from axis 14, wherein the parameters h, R₁ and R₂satisfy the relation R₁/R₂=(R−h)/h and wherein R is the farthestdistance of the roller from axis 14 (for example, R can be the radius oftray 12).

The operation of leveling device 32 is optionally and preferablycontrolled by controller 20 which may activate and deactivate levelingdevice 32 and may optionally also control its position along a verticaldirection (parallel to axis 14) and/or a radial direction (parallel totray 12 and pointing toward or away from axis 14.

In some embodiments of the present invention printing heads 16 areconfigured to reciprocally move relative to tray along the radialdirection r. These embodiments are useful when the lengths of the nozzlearrays 22 of heads 16 are shorter than the width along the radialdirection of the working area 26 on tray 12. The motion of heads 16along the radial direction is optionally and preferably controlled bycontroller 20.

Some embodiments contemplate the fabrication of an object by dispensingdifferent material formulations from different dispensing heads. Theseembodiments provide, inter alia, the ability to select materialformulations from a given number of material formulations and definedesired combinations of the selected material formulations and theirproperties. According to the present embodiments, the spatial locationsof the deposition of each material formulation with the layer isdefined, either to effect occupation of different three-dimensionalspatial locations by different material formulations, or to effectoccupation of substantially the same three-dimensional location oradjacent three-dimensional locations by two or more different materialformulations so as to allow post deposition spatial combination of thematerial formulations within the layer, thereby to form a compositematerial formulation at the respective location or locations.

Any post deposition combination or mix of modeling material formulationsis contemplated. For example, once a certain material formulation isdispensed it may preserve its original properties. However, when it isdispensed simultaneously with another modeling material formulation orother dispensed material formulations which are dispensed at the same ornearby locations, a composite material formulation having a differentproperty or properties to the dispensed material formulations is formed.

The present embodiments thus enable the deposition of a broad range ofmaterial formulation combinations, and the fabrication of an objectwhich may consist of multiple different combinations of materialformulations, in different parts of the object, according to theproperties desired to characterize each part of the object.

Further details on the principles and operations of an AM systemsuitable for the present embodiments are found in U.S. PublishedApplication No. 20100191360, the contents of which are herebyincorporated by reference.

FIG. 4 is a flowchart diagram of a method suitable for rendering dataaccording to various exemplary embodiments of the present invention. Itis to be understood that, unless otherwise defined, the operationsdescribed hereinbelow can be executed either contemporaneously orsequentially in many combinations or orders of execution. Specifically,the ordering of the flowchart diagrams is not to be considered aslimiting. For example, two or more operations, appearing in thefollowing description or in the flowchart diagrams in a particularorder, can be executed in a different order (e.g., a reverse order) orsubstantially contemporaneously. Additionally, several operationsdescribed below are optional and may not be executed.

The method is particularly useful for rendering data for addressabledispensing of materials. For example, the method can be used forrendering data for dispensing ink in two-dimensional printing, or fordispensing one or more building materials in AM.

Computer programs implementing the method can commonly be distributed tousers on a distribution medium such as, but not limited to, a flashmemory, CD-ROM, or a remote medium communicating with a local computerover the internet. From the distribution medium, the computer programscan be copied to a hard disk or a similar intermediate storage medium.The computer programs can be run by loading the computer instructionseither from their distribution medium or their intermediate storagemedium into the execution memory of the computer, configuring thecomputer to act in accordance with the method. All these operations arewell-known to those skilled in the art of computer systems.

The method can be embodied in many forms. For example, it can beembodied in on a tangible medium such as a computer for performing themethod steps. It can be embodied on a computer readable medium,comprising computer readable instructions for carrying out the methodsteps. In can also be embodied in electronic device having digitalcomputer capabilities arranged to run the computer program on thetangible medium or execute the instruction on a computer readablemedium.

The method begins at 200 and optionally and preferably continues to 201at which input image data arranged grid-wise over a plurality ofpicture-elements is received.

References to an “image” herein are, inter alia, references to values atpicture-elements treated collectively as an array, which can be atwo-dimensional or a three-dimensional array. Thus, the term “image” asused herein also encompasses a mathematical object which does notnecessarily correspond to a physical object. The input images certainlydo correspond to physical objects, which can be an object which isdesired to be displayed, printed or built by AM (e.g., 3D inkjetprinting), or an object from which the image data are acquired.

Each picture-element in the image can be associated with a singledigital intensity value, in which case the image is a grayscale image.Alternatively, each picture-element can be associated with three or moredigital intensity values corresponding to three or more different colorchannels (e.g., red, green and blue) in which case the image is a colorimage.

The method can proceed to 202 at which an initial map describing adistance field is generated. The map typically includes a plurality ofmap-elements, where each map-element stores distance informationcorresponding to one of the input picture-elements. A distance fieldgenerated for an initial map is typically, but not necessarily, includesdistances defined perpendicularly to the working surface (e.g., tray 360or tray 12). Such a distance field is referred to herein as a verticaldistance field.

When the grid is a three-dimensional grid describing coordinates ofpicture-elements of a three-dimensional image containing an object to bebuilt by an AM process (e.g., 3D inkjet printing), the initial map ispreferably generated by setting, for each map-element, a valuecorresponding to a height of the respective picture-element in theimage. The height is typically along the build direction of the AMprocess (the vertical direction z in FIGS. 1A and 1C). The Inventorsfound that such definition of the initial map allows treating each sliceindependently of all other slices. This is advantageous since it reducesthe memory resources that are needed for rendering the data, andtherefore allows AM with higher resolution. In various exemplaryembodiments of the invention the value of each map-element is the squareof the height of the respective picture-element, but need notnecessarily be the case, since, for some applications, it may be desiredto employ other values (e.g., the height itself) that depend on theheight.

When the input image data include grey level values, the initial map canbe generated by setting, for each map-element, a value corresponding tothe grey level of the respective picture-element in the image.

The initial map can be generated in more than one way. In someembodiments of the present invention the initial map is a two-value map.In these embodiments the map can be generated by setting, for each of atleast a portion of the map-elements (e.g., all the map-elements), one oftwo predetermined values, wherein a first value is set when thepicture-element that corresponds to this map-element is at the boundaryof the object in the image, and a second value of is set otherwise. As arepresentative example, which is not intended to be limiting,zero/infinity initial map can be constructed wherein all themap-elements that correspond to picture-element at the boundary of theobject store zeros and all other map-elements store the “infinity”value. It is appreciated that while infinity is not a number it canstill represent a stored value, since many computer programs recognizean infinity as one of the acceptable values that can be stored in avariable.

Embodiments in which the initial map is a two-value map are particularlyuseful when the grid is a two-dimensional grid describing coordinates ofpicture-elements of a two-dimensional image.

In some embodiments of the present invention, the initial map is amulti-value map, wherein the number of different values that are storedin the various map-elements is more than two.

The distance information is typically according to a Euclidian metric,but other metrics, such as, but not limited to, a taxicab metric arealso contemplated in some embodiments of the present invention.

The method continues to 203 at which the map is linearly scanned along afirst axis and to 204 which the map is linearly scanned along a secondaxis.

Each of linear scans 203 and 204 can be bi-directional along therespective axis. Specifically, denoting the axis along which the ithscan is performed by ξ_(i) (i=1, 2), the scan along this axis, the scancan be along the +ξ_(i) direction, the −ξ_(i) direction or both the+ξ_(i) direction and the −ξ_(i) direction.

The first and second axes are preferably orthogonal to each other. Forexample, the first and second axes can be defined along rows and columnsof the map, corresponding to rows and columns of picture-element in theimage. When the grid is a three-dimensional grid, the first and secondaxes are preferably orthogonal to the vertical axis. For example, thefirst and second axes can be the scanning and the indexing axes of theAM system (e.g., 3D inkjet printing system).

Each of the linear scans 203 and 204 is preferably executed for eachpicture-element p of at least a portion of the picture-elements, e.g.,for each picture-element of the image. During the linear scan, therespective map-element is updated based on values of map-elements thatare visited during the scan. Typically, the update is executed inaccordance with a predetermined objective function F, whereinmap-elements for which the predetermined objective function reaches anextremum (minimum or maximum) are updated by the value of the objectivefunction. For example, map-elements along the scan for which theobjective function is minimized can be updated by the value of theobjective function.

The objective function F optionally and preferably correlates with thedistance d_(pq) between picture-element p (for which the linear scan isperformed) and the picture-element q that corresponds to the map-elementthat is currently visited during the scan. For example, the objectivefunction can comprise the square of d_(pq) or the absolute value ofd_(pq). The metric according to which d_(pq) is calculated depends onthe metric according to which the distance information is stored in themap. Thus, when a Euclidian metric is employed, d_(pq) typicallycorrelates with the Euclidian distance between picture-elements p and q,and when a taxicab metric is employed, d_(pq) typically correlates withthe taxicab distance (also known in the literature as the Manhattandistance) between picture-elements p and q.

As a representative example for an objective function F suitable forpreferred embodiments of the present invention in which a Euclidianmetric is employed, is:

F(p,q)=DM(q)+(p−q)²   (EQ. 1)

where DM(q) is the value stored in of the map-element that correspondsto picture-element q, and where (p−q)² is the Euclidian distance betweenpicture-elements p and q.

The scans along the two axes are linear in the sense that for a givenaxis u and a given picture-element p only map-elements that correspondto picture-elements that are on axis u with respect to picture-element pare visited. This is illustrated schematically in FIG. 5 , for the casein which the first and second axes are along orthogonal x and ycoordinates defining rows and columns of the grid. Shown is a map 210with a plurality of map-elements 212. The map-element that correspondsto picture-element p (for which the linear scans are performed) isillustrated as a filled square. The map-elements that are visited duringthe scan along the x axis are illustrated as empty squares, themap-elements that are visited during the scan along the y axis areillustrated as cross-filled squares, and all other the map-elements areillustrated as dashed empty squares. Thus, not all the map-elements ofthe map are visited for picture-element p, so that the computationresources are significantly reduced.

For each of the two axes, the method scans the map-elements along therespective axis (x and y in the illustration shown in FIG. 5 ) andsearches for the map-element for which the value of F (e.g., thefunction defined in EQ. 1) reaches an extremum value (e.g., a minimum).Once such a map-element is found, its stored value is replaced with anupdated value, which in some embodiments of the present invention is thevalue of F itself. Two such map-elements (one for each of axes x and y)are marked by ovals in FIG. 5 .

The scans are optionally and preferably interdependent from each other,and can therefore be executed in any order of execution. For example,the method can select a map-element corresponding to one picture-elementand perform two scans along two respective axes (e.g., x and y in theillustration shown in FIG. 5 ) intersecting at the selected map-element,then select another picture-element and perform two scans along tworespective axes intersecting at the other map-element, and so on.Alternatively, the method can firstly select one of the two axes andperform scans along the selected axis for two or more map-elements(e.g., all the map-elements), and then perform scans along the otheraxis for these two or more map-elements. Combinations of thesealternatives are also contemplated.

The method can optionally and preferably continue to 205 at which aglobal transformation is applied to the map, so as to form a distancemap that represents the distance field over the grid. For example, whenthe map-elements are updated by values that are proportional to thesquares of the distances (e.g., by means of the objective functiondefined in EQ. 1), operation 205 can include replacing the stored valuesof each map-element by its square root.

The method can optionally and preferably continue to 206 at which thedistance map is processed to distinguish between picture-elements thatbelong to the object and picture-elements outside the object. Forexample, for picture-elements that are outside of the object therespective map-elements can be assigned with a negative value, forpicture-elements that are inside of the object the respectivemap-elements can be assigned with a positive value, and forpicture-elements that are at the boundary of the object the respectivemap-elements can be assigned with a zero value.

When the grid is a three-dimensional grid, operations 202-204 andoptionally also at least one of operations 205 and 206 are optionallyand preferably repeated separately for separate slices. Thus, in variousexemplary embodiments of the invention, once the operations arecompleted for one slice, a sub-map corresponding to this slice isformed, and the method loops back, e.g., from 204, 205 or 206, to 202for generating an initial sub-map and performing the scans to form thesub-map for the next slice.

The method ends at 207.

The present inventors found that it is advantageous to generate theinitial map using one processor and to perform the scan using anotherprocessor. For example, the generation of the initial map (e.g., avertical distance field), which typically requires less resources, canbe executed by a graphics processing unit (GPU), wherein the linearscans and optionally other operations can be performed by a centralprocessing unit (CPU). Typically, the GPU and CPU are of the samecomputer system (e.g., computer system 24 or 154). Preferred embodimentsof the present invention can thus load a computerized model of an object(e.g., a CAD model) onto the GPU, use the GPU to generate 202 theinitial map, load the initial map onto the CPU, and use the CPU forperforming the scans 203 and 204 and optionally also the globaltransformation 205 and/or processing 206.

When the grid is a three-dimensional grid, and method 200 produces adistance sub-map separately for each slice, the CPU can transmit eachdistance sub-map separately to a controller of the dispensing system(e.g., a two-dimensional printing system or an AM system), and thenpurge the sub-map from its associated memory. This allows the computersystem to save in its associated memory only data pertaining to thedistance sub-map that is currently produced. Conventional techniquesneed to save data pertaining to all the slices in their memory. Sincethe amount of space in their memory is typically insufficient,conventional techniques are required to apply down sampling ormultiresolution techniques, hence to compromise on the resolution. Thetechnique of the present embodiments is therefore advantageous overconventional techniques, since there is no need to save all the sub-mapsin the memory, and therefore there is no need to apply down sampling ormultiresolution techniques.

FIG. 6 is a flowchart diagram describing a method suitable forgenerating dispensing instructions for use by a dispensing system,according to some embodiments of the present invention. The method canbe used, for example, by a two-dimensional printing system for printinga two-dimensional image containing an object, or by an AM system, e.g.,a three-dimensional inkjet printing system, for fabricating athree-dimensional object. In various exemplary embodiments of theinvention the method is used by system 10 or system 110.

The method begins at 230 and continues to 231 at which a distance map orsub-map is obtained for a slice of the object. The distance map orsub-map can be generated by the method 200 described above withreference to FIGS. 4 and 5 . The method proceeds to 232 at which amaterial to be dispensed is designated for each picture-element (e.g.,voxel) of at least a portion of the picture-elements (e.g., all thepicture-elements). The material designation for a particularpicture-element is typically based, at least in part, on the respectivemap-element.

In some embodiments of the invention operation 232 is executed to selectdifferent materials for picture-elements at interlaced locations such asto form a textured region. The interlaced locations are optionally andpreferably selected according to a modulating function. The modulationfunction receives a position of a candidate picture-element (e.g.,voxel) and provides an output value, which is then used to select thematerial for the candidate picture-element. Thus, one material isdesignated for the picture-element when the output value is within onepredetermined range of output values, another material is designated forthe candidate picture-element when the output value is within anotherpredetermined range of output values, and so on. Typically, there is atleast one output value or range of output values for which no materialis designated for the candidate picture-element.

In some embodiments of the present invention, map-elements are employedin combination with the modulating function. Typically, apicture-element (e.g., a voxel) is selected and a value stored in therespective map-element is used as an input for the modulating function.Thus, in these embodiments, the modulating function receives theposition and distance field value of the candidate picture-element andprovides an output value, which is then used to select the material forthe candidate picture-element as further detailed hereinabove.

The present embodiments contemplate many types of modulating functions.For example, in some embodiments of the present invention the modulatingfunction comprises a noise function. Representative examples of noisefunctions suitable for being included in the modulating functioninclude, without limitation, a simplex noise function, an open simplexnoise function, a Worley noise function, a Perlin noise function, awavelet noise function, and a value noise function. In some embodiments,the modulating function comprises a periodic function. Typically, butnot necessarily, the periodic modulating function has a period of 2 orless mm. In some embodiments, the modulating function comprises anaperiodic function. Combination of two or more of these or otherfunctions is also contemplated. A more detailed description of theconcept of modulating functions and distance fields is provided in theExamples section that follows.

The material designation can additionally be based on a set ofdispensing rules associated with the object (e.g., a set of AM ruleswhen the object is a 3D object). The set of dispensing rules optionallyand preferably include building material formulation(s) to be dispensedas well as dispensing parameters and conditions (e.g., temperature,interlacing ratios, interlacing texture). The set of dispensing rulescan be obtained from a look-up table having an entry for each type ofobject, and a set of parameters associated with each such entry.

The method continues to 233 at which dispensing instructions aregenerated based on the designation 232. The dispensing instructions arereadable by the controller of the dispensing system (e.g., controller 20of system 10 or controller 340 of system 110) and can include a materialbitmap having a plurality of bitmap-elements, each storing informationpertaining to a material to be dispensed. The dispensing instructionscan optionally and preferably include, in addition to the materialbitmap, toolpath instructions that describe the paths along which thedispensing head(s) should be moved to dispense material. For example, amarching square algorithm can be applied to identify toolpaths from thebitmap. In some embodiments, the material bitmap is converted intomeshes that provide three-dimensional descriptions of the object'sboundaries. Such meshes can be applied as input to other dispensingsystems or as input to CAD systems. In some embodiments, a marchingcubes algorithm is used to identify the meshes from the bitmap.

The method continues to 234 at which the dispensing instructions aretransmitted to the controller of the dispensing system. The controllerreceives the dispensing instructions and instructs the dispensinghead(s) of the dispensing system (e.g., head(s) 16 of system 10 orsystem 110) to dispense 236 the material formulations to form the objectresponsively to the instructions.

When the grid is a three-dimensional grid, the dispensing instructionsare optionally and preferably generated and transmitted on aslice-by-slice basis, so that the dispensing instructions includeinstructions for building one layer and optionally, but not necessarily,two more layers, but not all the layer. For example, a sub-mapcorresponding to a particular slice can be obtained at 231 andoperations 232-235 can be executed for the particular slice but not forany other slice, namely based on the information in the obtained sub-mapbut not based on information in any other sub-map. Thus, in someexemplary and preferred embodiments of the invention, once thedispensing instructions for the particular slice are transmitted to thecontroller, the method loops back, e.g., from 234 or 235 to 231 forobtaining a distance sub-map corresponding to the next slice.

The method ends at 236.

FIG. 7 is a flowchart diagram that describes a preferred proceduresuitable for generating a material bitmap, which can be includedaccording to some embodiments of the present invention in the dispensinginstructions. The procedure can thus be executed during the execution ofoperation 233 above. The procedure begins at 720 and is optionally andpreferably applied for each of the picture-elements (e.g., each of thevoxels).

At decision 721 a distance field value relative to the object isretrieved from the respective map-element. When the picture-element(e.g., voxel) is within or on the outermost surface of the object (forexample, when the distance field value is positive), the procedurecontinues to 722 at which a building material formulation is allocatedfor the respective picture-element. The building material formulationcan be a modeling material formulation, a support material formulation,or a liquid material formulation, and is optionally and preferablydetermined based on the position of the picture-element in the object(e.g., the position of the voxel in case the object is a 3D object) andthe dispensing rules (e.g., AM rules for a 3D object). From 722 theprocedure continues to 724 at which the procedure selects a pixel valuethat corresponds to the allocated building material formulation. Thepixel value can be any value that uniquely represents the allocatedbuilding material formulation. For example, the pixel value can be agrayscale level or a color value (e.g., RGB value).

When the picture-element (e.g., voxel) is outside the object (forexample, when the distance field value is negative), the procedurecontinues to decision 723 at which the procedure determines whether thepicture-element is to be occupied or left vacant. If the picture-elementis to be left vacant, the procedure continues to 726 at which theprocedure selects a pixel value that uniquely represents a vacant pixel.For example, the procedure can select a null value to represent a vacantpixel. Alternatively, when the picture-element is outside the object theprocedure can continue from 723 to terminal 728 where it ends, in whichcase pixels that have not been assigned with any values are to beinterpreted as instructions to leave a picture-element vacant.

If the picture-element is to be occupied, the procedure continues to 725at which a building material is allocated to the picture-element, andthen to 724 at which the procedure selects a pixel value thatcorresponds to the allocated building material formulation as furtherdetailed hereinabove.

From 724, 725 or 726, as the case may be, the procedure continues to 727at which the selected pixel value is assigned to a pixel in the materialbitmap.

The procedure ends at 728.

FIG. 8 is a flowchart diagram that describes a method 750 suitable forgenerating a closest point map or sub-map according to some embodimentsof the present invention. The method 750 can be executed in combinationwith any of methods 200 and 230 above. For example, the method can beexecuted in parallel with or subsequently to method 200 so as to provideboth a distance map or sub-map and a closest point map or sub-map. Aclosest point map or sub-map is particularly useful for determiningwhether a particular picture-element is inside the object, outside theobject or on the boundary of the object. Thus, the method 750 can beexecuted during the execution of operation 206 above.

The method begins at 750 and continues to 751 at which input image dataarranged grid-wise over a plurality of picture-elements, is received.The method can proceed to 752 at which an initial closest point map isgenerated. The initial closest point map typically has a plurality ofmap-elements each corresponding to one picture-element and storing alocation of a point on an object in the image data to which thepicture-element is closest.

The initial closest point map can be generated in more than one way. Insome embodiments of the present invention the initial closest point mapis a two-value map. In these embodiments the closest point map can begenerated by setting, for each of at least a portion of the map-elements(e.g., all the map-elements), one of two predetermined values, wherein afirst value is set when the picture-element that corresponds to thismap-element is at the boundary of the object in the image, and a secondvalue of is set otherwise. As a representative example, which is notintended to be limiting, zero/infinity initial closest point map can beconstructed, in a similar way as described above with respect to thedistance map. Embodiments in which the initial map is a two-value mapare particularly useful when the grid is a two-dimensional griddescribing coordinates of picture-elements of a two-dimensional image.

In some embodiments of the present invention, the initial map is amulti-value map, wherein the number of different values that are storedin the various map-elements is more than two.

When the grid is a three-dimensional grid describing coordinates ofpicture-elements of a three-dimensional image containing an object to bebuilt by an AM process (e.g., 3D inkjet printing), the initial closestpoint map is preferably generated by setting, for each map-element, avalue corresponding to a height of the respective picture-element in theimage, in a similar way as described above with respect to the distancemap for the case of three-dimensional grid.

The method continues to 753 at which the closest point map is linearlyscanned along a first axis and to 754 which the closest point map islinearly scanned along a second axis, in a similar way as describedabove with respect to the distance map. Each of the linear scans 753 and754 is preferably executed for each picture-element p of at least aportion of the picture-elements, e.g., for each picture-element of theimage. During the linear scan, the respective map-element is updatedbased on values of map-elements that are visited during the scan.Typically, the update is executed in accordance with a predeterminedobjective function G, wherein map-elements for which the predeterminedobjective function G reaches an extremum (minimum or maximum) areupdated by the value of the objective function. For example,map-elements along the scan for which the objective function isminimized can be updated by the value of the objective function.

Similarly, to the method for generating the distance map, the scans areoptionally and preferably interdependent from each other, and cantherefore be executed in any order of execution.

When the grid is a three-dimensional grid, operations 752-744 areoptionally and preferably repeated separately for separate slices. Thus,in various exemplary embodiments of the invention, once the operationsare completed for one slice, a sub-map of closest points correspondingto this slice is formed, and the method loops back, e.g., from 74, to752 for generating an initial closest point sub-map and performing thescans to form the sub-map for the next slice.

The method ends at 757.

It is expected that during the life of a patent maturing from thisapplication many relevant printing and AM systems will be developed andthe scope of the term “dispensing system” is intended to include allsuch new technologies a priori.

As used herein the term “about” refers to ±10%.

The word “exemplary” is used herein to mean “serving as an example,instance or illustration.” Any embodiment described as “exemplary” isnot necessarily to be construed as preferred or advantageous over otherembodiments and/or to exclude the incorporation of features from otherembodiments.

The word “optionally” is used herein to mean “is provided in someembodiments and not provided in other embodiments.” Any particularembodiment of the invention may include a plurality of “optional”features unless such features conflict.

The terms “comprises”, “comprising”, “includes”, “including”, “having”and their conjugates mean “including but not limited to”.

The term “consisting of” means “including and limited to”.

The term “consisting essentially of” means that the composition, methodor structure may include additional ingredients, steps and/or parts, butonly if the additional ingredients, steps and/or parts do not materiallyalter the basic and novel characteristics of the claimed composition,method or structure.

As used herein, the singular form “a”, “an” and “the” include pluralreferences unless the context clearly dictates otherwise. For example,the term “a compound” or “at least one compound” may include a pluralityof compounds, including mixtures thereof.

Throughout this application, various embodiments of this invention maybe presented in a range format. It should be understood that thedescription in range format is merely for convenience and brevity andshould not be construed as an inflexible limitation on the scope of theinvention. Accordingly, the description of a range should be consideredto have specifically disclosed all the possible subranges as well asindividual numerical values within that range. For example, descriptionof a range such as from 1 to 6 should be considered to have specificallydisclosed subranges such as from 1 to 3, from 1 to 4, from 1 to 5, from2 to 4, from 2 to 6, from 3 to 6 etc., as well as individual numberswithin that range, for example, 1, 2, 3, 4, 5, and 6. This appliesregardless of the breadth of the range.

Whenever a numerical range is indicated herein, it is meant to includeany cited numeral (fractional or integral) within the indicated range.The phrases “ranging/ranges between” a first indicate number and asecond indicate number and “ranging/ranges from” a first indicate number“to” a second indicate number are used herein interchangeably and aremeant to include the first and second indicated numbers and all thefractional and integral numerals therebetween.

It is appreciated that certain features of the invention, which are, forclarity, described in the context of separate embodiments, may also beprovided in combination in a single embodiment. Conversely, variousfeatures of the invention, which are, for brevity, described in thecontext of a single embodiment, may also be provided separately or inany suitable subcombination or as suitable in any other describedembodiment of the invention. Certain features described in the contextof various embodiments are not to be considered essential features ofthose embodiments, unless the embodiment is inoperative without thoseelements.

Various embodiments and aspects of the present invention as delineatedhereinabove and as claimed in the claims section below find experimentalsupport in the following examples.

EXAMPLES

Reference is now made to the following examples, which together with theabove descriptions illustrate some embodiments of the invention in a nonlimiting fashion.

Example 1 Distance Field and Modulation Functions

The present example describes a method that includes selecting a voxelfrom a three-dimensional build space and for the selected voxel,determining a distance field value relative to a three-dimensional partin the three-dimensional build space. The method can be used forpreparing computer object data for use in systems 110 and 10 accordingto some embodiments of the present invention. At least some of thedescription below is also described in international patent applicationNo. PCT/US2017/019340, filed on Feb. 24, 2017, the contents of which arehereby incorporated by reference.

The distance field value can be used to select at least one materialselection rule and a feature of the voxel is applied to the at least onematerial selection rule to identify a material designation for thevoxel. The material designation indicates no material is to be placed atthe voxel when the material selection rule identifies no material forthe voxel and the material designation indicates at least one materialis to be placed at the voxel when the at least one material selectionrule identifies the at least one material for the voxel. The materialdesignation for the voxel is then output for use in building thethree-dimensional part using an additive manufacturing system.

In some embodiments of the present invention the method includesselecting a voxel in a three-dimensional build space, determining afirst distance field value for the voxel relative to a boundary of afirst three-dimensional part positioned in the three-dimensional buildspace, and determining a second distance field value for the voxelrelative to a boundary of a second three-dimensional part positioned inthe three-dimensional build space. The first distance field value andthe second distance field value are then used to set a materialdesignation for the voxel.

To build a part using additive manufacturing, instructions must beprovided to the printer to indicate what material, if any, should beplaced in each of the available locations of each printing layer. In thepast, these instructions were produced by identifying the exteriorbounds of each part at each slice using boundary representations. A partmaterial was then designated for each location that was positioned alongthe boundary of the part. If the part was to be solid, the material setfor the part was also designated for each location within the boundariesof the part. In such systems, all material transitions, either from onematerial to another material, or from a material to open space, had tobe described by a boundary representation.

The present inventors have discovered that relying on such boundaryrepresentations to control transitions between materials creates severalproblems. First, performing rounding, lofting and offset modelingoperations where boundary representations are shifted inward or outwardto produce the print instructions can produce errors or unexpectedresults due to interference between shifted boundary representations.This typically occurs when the topology of the part is complex. Second,Boolean operations, such as subtraction or union, which are performedbetween two different parts when generating print instructions, can failif the boundary representations of the parts do not define an enclosedobject. Any opening in the part will cause the Boolean operations to belimited to the boundary representation itself instead of the completevolume of the part. Third, it is extremely difficult to define latticesusing boundary representations because the lattices require a hugenumber of meshes resulting in a large amount of data. Fourth, it is notpossible to form material gradients in which a mixture of materialschanges over some dimension of the part.

In the embodiments described below, the problems associated withboundary representations are overcome by using distance fields. In oneembodiment, a distance field is created by dividing thethree-dimensional build space, which contains the part(s) to bemanufactured, into a three-dimensional matrix of voxels. The closestdistance from each voxel to a part boundary is then determined such thatif the voxel is within the part, the distance is set as a positivevalue, if the voxel is outside of the part, the distance is set as anegative value and if the voxel is on the part boundary, the distance iszero. This produces a three-dimensional matrix of distance field values.Each part has its own associated distance field. As a result, when thereare multiple parts in the build space, each voxel has multiple differentdistance field values, each associated with a separated part.

Once the distance fields are determined, they are used to select atleast one material selection rule for each voxel. Each materialselection rule identifies a material designation for the voxel using atleast one feature of the voxel such as the distance field value of thevoxel and the position of the voxel in the build space, for example. Insome embodiments, the material selection rule includes a periodicfunction that is a function of the distance field values and/or theposition in the build space such that one range of output valuesproduced by the periodic function is associated with no material beingdesignated for the voxel and another range of output values produced bythe periodic function is associated with a material being designated forthe voxel.

Such periodic functions allow lattices to be defined in the build space.

FIG. 9A shows an example of a simplified system for assigning materialsto voxels and manufacturing parts using the assigned materials. In FIG.9A, a computer 9066 acts as a host computer for an additivemanufacturing system 9068 and communicates with system 9068 over one ormore communication lines 9070. In some embodiments, computer 9066 isinternal to system 9068, such as part of an internal controller assemblyfor system 9068. In other embodiments, computer 9066 is external toadditive manufacturing system 9068.

FIG. 10 shows a block diagram of an example architecture for computer9066. As shown, computer 9066 includes suitable computer-based hardware,such as a user interface 9082, a memory controller 9084, a processor9086, a graphics processing unit 9087, a storage media 9088, aninput/output (I/O) controller 9090, and a communication adapter 9092.Computer 9066 may also include a variety of additional components thatare contained in conventional computers, servers, media devices, signalprocessing devices, and/or printer controllers.

User interface 9082 is one or more user-operated interfaces (e.g.,keyboards, touch pads, touch-screen displays, display monitors, andother eye, voice, movement, or hand-operated controls) configured tooperate computer 9066. Memory controller 9084 is one or more circuitassemblies that interface the components of computer 9066 with one ormore volatile random access memory (RAM) modules of storage media 9088.Processor 9086 is one or more computer-processing units configured tooperate computer 9066, optionally with memory controller 9084, andpreferably with related processing circuitry (e.g., programmable gatearrays, digital and analog components, and the like). For instance,processor 9086 may include one or more microprocessor-based and/ormicrocontroller-based units, one or more central processing units,and/or one or more front-end processing units.

Graphics processing unit 9087 contains a large number of transistorsthat are arranged to perform calculations related to 3D computergraphics in a fast an efficient manner. Such calculations includetexture mapping and rendering polygons that represent 3D objects.

Storage media 9088 is one or more internal and/or external data storagedevices or computer storage media for computer 9066, such as volatileRAM modules, read-only memory modules, optical media, magnetic media(e.g., hard disc drives), solid-state media (e.g., FLASH memory andsolid-state drives), analog media, and the like. Storage media 9088 mayretain one or more pre-processing and/or post-processing programs (notshown) discussed further below.

I/O controller 9090 is one or more circuit assemblies that interfacememory controller 9084, processor 9086, and storage media 9088 withvarious input and output components of computer 9066, including userinterface 9082 and communication adapter 9092. Communication adapter9092 is one or more wired and/or wireless transmitter/receiver adaptersconfigured to communicate over communication lines 9070.

The commands from computer 9066 to the components of systems 9068 may beperformed with one or more of user interface 9082, memory controller9084, processor 9086, storage media 9088, input/output (I/O) controller9090, communication adapter 9092, and/or other suitable hardware andsoftware implementations, as is understood by those skilled in the art.

FIG. 11 provides a flow diagram of a method of generating printinstructions from part models using distance fields. FIG. 12 provides ablock diagram of a system 9200 used to implement the method of FIG. 11 .In accordance with one embodiment, system 9200 is implemented incomputer 9066.

In step 9100, part data is received including meshes 9202, texture maps9204, bump maps 9206, shine maps 9208, point features 9209 and a partresolution, which are stored in storage media 9088. Meshes 9202 describeplanar boundaries of the part and can be defined as interconnectedtriangles or interconnected quadrilaterals. Texture maps 9204 describethe location and geometry of surface textures to be applied on theoutside of each of the surfaces described by meshes 9202. Bump maps 9206provide descriptions of larger surface features present on particularsurfaces of the meshes 9202. FIG. 13 provides an example of a portion ofa part showing two surfaces 9300 and 9302 having textures marked by theraised squares 9304 and a surface bump 9306 represented by the largeraised square. The small squares 9304 would be described in the texturemaps 9204 while the surface bump 9306 would be described in the bumpmaps 9206. Shininess maps 9208 indicate a desired level of shine fordifferent surfaces of the part.

Point features 9209 describe sets of material selection rules to be usedfor portions of the part having specific features. Examples of partfeatures that can be used as the basis for assigning sets of materialselection rules include identifiers of a body or mesh, surface texturecoordinates, and surface normal ranges. Thus, in some embodiments,different portions of a part have different sets of material selectionrules such that at the same distance field values, different materialswill be used for different areas around the part. A further descriptionof the use of such point features is provided below.

Meshes 9202, texture maps 9204 and bump maps 9206 are provided to aslice computations process 9210 executed by graphics processing unit9087, which performs step 9101-9116, 9120, 9122 and 9124 of FIG. 11described further below.

At step 9101, slice computations process 9210 defines athree-dimensional build space and orients the parts described by meshes9202, texture maps 9204 and bump maps 9206 in the three-dimensionalbuild space to form oriented digital models 9091. In accordance with oneembodiment, the build space is defined by first orienting the digitalparts and then defining a bounding box around the oriented parts toprovide a support structure envelope around the parts.

FIG. 14 provides a three-dimensional view of a three-dimensional partmodel 402 oriented in a three-dimensional build space 400. In FIG. 14 ,there is a −Z direction 406, a +Z direction 408, an X direction 410 anda Y direction 412. A slice 400 of build space 400 is shown to include acollection of voxels, such as voxel 414. Although only a single slice isshown in FIG. 14 , there are multiple slices in build space 400 suchthat voxels fill the entirety of build space 400. The dimensions of thevoxels are based on the resolution set for the part.

At step 9102, slice computations process 9210 sets values for Z buffer9095 for each slice in build space 400. The Z buffer for a slicecontains a value for each voxel in the slice, where the magnitude of theZ buffer value represents the magnitude of the vertical distance betweenthe voxel and the closest STL boundary of the part. The STL boundary ofthe part is constructed from the combination of one or more meshes 9202,texture maps 9204 applied to those meshes, and bump maps 9206 applied tothose meshes. In step 9102, this distance is determined by looking in −Zdirection 406 from the voxel and the Z buffer is therefore referred toas the −Z buffer. The sign of the Z buffer value indicates whether thevoxel is inside or outside the part with negative values indicating thatthe voxel is outside of the part and positive values indicating that thevoxel is inside the part. Initially, all of the −Z buffer values for aslice are set to a maximum negative value, which indicates that noportion of the part is visible in −Z direction 406 from any of voxels.

A rendering operation is then performed by GPU 9087 using meshes 9202,texture maps 9204 and bump maps 9206 to construct a description of theSTL boundaries of the part in three-dimensional build space 400 and toproject that description onto the slice. In particular, each surface inmeshes 9202 is rendered one at a time and the texture maps 9204 and bumpmaps 9206 are applied to the rendered surfaces to produce the STLboundaries for the surface and the resulting STL boundaries for thesurfaces are projected onto the slice by identifying the voxels that aredirectly above the STL boundaries in the three-dimensional build space.For each voxel that is directly above the STL boundaries of a surface,the distance between the STL boundary and the voxel is compared to thecurrent distance stored in the −Z buffer for the voxel. If the distanceto the surface currently being projected has a smaller magnitude thanthe value stored in the −Z buffer, the current surface is considered tobe closer to the voxel than any previously rendered surfaces of the partand the −Z buffer is updated with the distance to the current STLboundary. The sign of the distance value stored in the −Z buffer is setto indicate whether the voxel is inside or outside the part. This can bedetermined based on the angle between the outward normal of the currentsurface and the +Z direction 408. In accordance with one embodiment, theidentity of the current surface is also stored in an additional bufferfor the slice. If the distance between the current STL boundary and thevoxel is larger than the magnitude of the Z buffer value for the voxel,the Z buffer value remains unchanged. This will occur when the currentsurface is obscured from the voxel by another surface of the part, whichis closer to the voxel. Thus, after every surface of the part below thecurrent slice has been rendered and projected onto the slice, the Zbuffer contains values indicating the shortest distance in the Zdirection between the voxel and the STL boundary of the part and afurther buffer indicates the identity of those closest surfaces. This isrepeated for each slice in build space 400.

The loading of Z buffers using graphical processing units is common inrendering 3D computer models of objects onto 2D planes. However, usingsuch graphical processing units to load Z buffers associated with voxelsas part of constructing three-dimensional parts has not been known.

After the −Z buffers have been formed for all of the slices in buildspace 400 the lowest slice in build space 400 is selected at step 9104.At step 9106, a rendering operation is performed in the +Z direction toload a +Z buffer for the selected slice. This rendering is identical tothe rendering performed in the −Z direction with the exception that theview is changed to +Z direction 408. After step 9106, the selected slicehas a +Z buffer value for each voxel and a −Z buffer value for eachvoxel where the +Z buffer value provides the shortest vertical distancebetween the voxel and the part in +Z direction 408 and the −Z buffervalue provides the shortest distance between the voxel and the part in−Z direction 406.

Although steps 9102 and 9106 are described above with reference to onepart in build space 400, in other embodiments, multiple parts arepresent in build space 400. When multiple parts are present in buildspace 400, a separate −Z buffer and a separate +Z buffer is created foreach part for each slice in build space 400.

At step 9108, silhouette boundaries for the selected slice aredetermined from the +Z buffer(s). In particular, the +Z buffer valuesfor pairs of voxels are examined to identify transitions from a negativevalue to the greatest magnitude negative value possible. Suchtransitions represent a boundary between where a portion of a part isabove a voxel and no portion of the part is above the voxel's neighbor.An example of such a boundary can be seen in FIG. 14 where voxels 420and 422 are positioned along such a boundary. Voxel 420 is positionedbelow part 402 and has a +Z buffer value of −4. Voxel 422, whichneighbors voxel 420, is not below any portion of the part and as suchhas the largest possible negative value, for example −10000, in the+Z-buffer. Repeating this pairwise comparison for every pair producessilhouette boundaries, such as silhouette boundary 424 where voxelswithin the boundary are considered to be underneath a portion of thepart and voxels outside of the silhouette are not below any portions ofa part. Note that when multiple parts are present in build space 400,step 9108 is repeated for each +Z buffer for the slice selected at step9104.

At step 9110, slice computations process 9210 determines theintersections of STL boundaries with the current slice. In FIG. 14 , theintersection of the STL boundary and slice 400 is shown as boundary 430,shown in dotted lines. The intersection of the STL boundaries with theslice can be found by examining the +Z buffer and the −Z buffer toidentify neighboring pixels where the Z buffer value changes from anegative value to a value of 0 or from a negative value to a positivevalue. Such changes in the Z-buffer values indicate a transition frombeing outside of the part to being within the part. Step 9110 isperformed for each part's Z buffers.

At step 9112, a single voxel in the current slice is selected. At step9114, a distance field value to the part's STL boundaries is determinedfor the voxel. This distance field value is the shortest magnitudedistance between the voxel and any portion of the part's STL boundaries.At step 9116, if the current voxel is outside of the part, the distanceto the silhouette boundary is determined for the current voxel.

In accordance with one embodiment, steps 9114 and 9116 are performedtogether using a sampling algorithm. One example of such a samplingalgorithm is shown in the flow diagram of FIG. 15 , which is explainedwith reference to FIG. 16 . In FIG. 16 , a top view of a slice 620 isshown with a matrix of voxels, including current voxel 600. An STLboundary 612 that intersects slice 600 is shown as a solid line and asilhouette boundary 610 is shown as a dotted line.

At step 500 of FIG. 15 , the current voxel, voxel 600 of FIG. 16 , isexamined to determine if it is at an STL boundary in the current slice.For example, in FIG. 16 , voxel 650 would be considered to be at STLboundary 612 since STL boundary 612 intersects with voxel 650. If thecurrent voxel is at the STL boundary at step 500, the distance fieldvalue is set to 0 for the current voxel at step 502.

If the current voxel is not at the STL boundary at step 500, as is shownwith current voxel 600 of FIG. 16 , step 504 of FIG. 15 is performedwhere the distance field value for current voxel 600 is set to thesmaller of the two Z-buffer values for the current voxel. In particular,the magnitudes of the Z distance value in the +Z-buffer and −Z-bufferare compared and the smaller magnitude is set as the distance fieldvalue for the current voxel. In addition, the sign of the distance fieldvalue is set based upon whether the voxel is inside or outside of thepart. If the voxel is inside the part, the distance field value is setas a positive value and if the voxel is outside of the part, thedistance field value is set to a negative value.

At step 506, a ring of voxels around the current voxel in the currentslice is identified. For example, in FIG. 16 , a first ring 602indicated by the dotted shading surrounds current voxel 600. At step508, a voxel in the identified ring is selected. If this selected ringvoxel is at the STL boundary at step 510, the distance between theselected ring voxel and the current voxel 600 is used as a testdistance. If the ring voxel is not at the STL boundary, a combination ofthe smaller of the two Z-buffer values for the ring voxel and thedistance between the ring voxel and the current voxel is used todetermine the test distance at step 514. In particular, the Z-buffervalues in the +/−Z-buffer for the ring voxel are compared to each otherand the smaller magnitude of the two Z-buffer values is selected as avertical component of the distance to the part. A horizontal componentof the distance of the part is computed as the distance between the ringvoxel and the current voxel 600. Squaring the vertical component of thedistance and the horizontal component of the distance, summing thesquares, and taking the square root of the sum provides the distancebetween the current voxel 600 and the portions of the part above orbelow the ring voxel. Note that if no portion of the part is above orbelow the ring voxel, the Z-buffers will each contain large magnitudevalues.

The test distance value computed in either step 512 or 514 is thencompared to the current stored distance field value for the currentvoxel 600 at step 516. If the test distance is less than the currentdistance field value, the test distance is set as the new currentdistance field value. If the magnitude of test distance is not less thanthe magnitude of the current distance field value, the current distancefield value remains the same.

At step 518, the method determines if the ring voxel is at thesilhouette boundary, such as silhouette boundary 610 of FIG. 16 . If thering voxel is at the silhouette boundary, a shortest distance to thesilhouette boundary for current voxel 600 is set to the lesser of apreviously stored distance to the silhouette boundary for current voxel600 and the distance between the ring voxel and the current voxel atstep 520. Thus, if the ring voxel is at the silhouette boundary and thedistance between the ring voxel and the current voxel is smaller thanpreviously identified distances between the current voxel and thesilhouette boundary, the shortest distance between the current voxel 600and the silhouette boundary is updated to reflect the distance betweenthe ring voxel and the current voxel 600.

If the ring voxel is not at the silhouette boundary or after thedistance to the silhouette boundary has been updated, the process ofFIG. 15 determines if there are more ring voxels in the current selectedring. If there are more ring voxels, the process returns to step 508 andthe next voxel in the current ring is selected. Steps 510-522 are thenrepeated. When all of the voxels in a current ring have been processedat step 522, the method determines if there are more voxels around thecurrent ring at step 524. If there are more voxels around the currentring at step 524, the process returns to step 506 and the next ringaround the current ring of voxels is selected. For example, after ring602 is processed, ring 604 is processed, then ring 606, then ring 608.In processing successive rings, the STL boundaries are not crossed. Assuch, once an STL boundary is reached, voxels on the other side of theboundary are not processed. For example, voxel 652 is not processed aspart of ring 608 since STL boundary 612 separates voxel 652 from currentvoxel 600. The same is true for rings of voxels that are processedwithin a part. Specifically, when a current voxel is located within apart, voxels outside of the part are not used to determine the distancefield for the voxel.

When there are no more voxels around the current ring at step 524, theprocess ends and the distance field value stored for the current voxelis output as the final distance field 9212 (FIGS. 10 and 12 ). Thisdistance field value will have a magnitude representing the shortestdistance between the current voxel and any STL boundary of the part anda sign that will indicate whether the current voxel is within the partor is exterior to the part. In addition, when the distance field valueis updated for the current voxel, one or more features associated withthe distance field value are also stored such as the position of theclosest point on the STL boundary, identifiers of the body or mesh thatthe closest point is located on, surface texture coordinates, and thesurface normal at the closest point, for example. In accordance with oneembodiment, different features of the part have different sets ofmaterial selection rules associated with them. As a result, differentportions of the part can have different material selection rulesassociated with it. Similarly, the shortest distance to the silhouetteboundary 9216 is output as is the location of the closest silhouetteboundary point 9218.

When there are multiple parts in build space 400, the steps of FIG. 15are repeated for each part to generate a distance field value 9212, aclosest STL boundary point 9214, a closest distance to the silhouette9216 and the closest silhouette boundary point 9218 for the voxel foreach part. It is possible for a single voxel to be outside of all parts,to be located in a single part while outside of other parts, or to belocated within multiple parts.

Returning to FIG. 11 , after the distance field values and the distanceto the silhouette boundary have been determined for the selected voxelat steps 9114 and 9116, respectively, material for the voxel isdetermined at step 9118 by a material selection unit 9226. FIG. 17provides a flow diagram showing initial steps in performing the materialselection.

At step 9700, the distance fields are examined to determine if the voxelis in at least one part. This determination can be made by determiningif there is at least one non-negative distance field value stored forthe voxel. If the voxel is in at least one part, all negative distancefield values for the voxel are ignored at step 9702. Thus, if a voxel islocated within at least one part, the material selection rules 9220associated with the voxel being inside part(s) control the materialselection and the material selection rules 9220 associated with thevoxel being outside of other parts are ignored. Note that if there isonly one part in the build space, there will be no negative distancefields to ignore at step 9702.

At step 9704, material selection unit 9226 determines if there aremultiple parts in the build space. If there is only one part in thebuild space, a single-part material selection process is performed atstep 9706. An example of one such single-part material identificationprocess is discussed further below. If there are multiple parts at step9704, a multipart material selection process is performed at step 9708.One example of such a multipart material selection process is discussedbelow.

Returning to step 9700, if the voxel is not in any of the parts in thebuild space, the voxel's position relative to the silhouette boundary isexamined at step 9710 to determine if the voxel is in a direct supportregion for a part. A direct support region is a region in the buildspace located within a silhouette of a part. Such direct support regionsrequire sufficient support material to support the part as it is built.Determining whether a voxel is in a direct support region involveslooking at the +Z-buffer value(s) for the voxel. If any of the +Z-buffervalue(s) is negative and has a magnitude less than the maximummagnitude, the voxel is in a direct support region. If the voxel is in adirect support region, a direct support designation is set at step 9712for the voxel.

If the voxel is not in a direct support region at step 9710, the voxel'sposition is examined to determine if it is in an angled support regionfor the part at step 9714. For some parts, in addition to providingadditional support in the direct support regions, additional support isalso provided outside of the silhouette of the part so that theadditional support has an angled surface and is not completely vertical.To determine if the voxel is in an angled support region for the part,the distance to the closest silhouette boundary for the part is combinedwith the vertical distance to the part from that closest point on thesilhouette boundary to determine an angle between the voxel and theportion of the part above the silhouette boundary relative to the xyplane of the slice. If this angle is greater than some maximum angle setfor the angled support region, the voxel is considered to be within theangled support region at step 9714. If the computed angled is less thanthe maximum angle for the angled support region, the voxel is consideredto be outside of the angled support region for the part. If the voxel iswithin the angled support region at step 9714, a designation that thevoxel is in the angled support region is set at step 9716. After step9714 or step 9716, the process moves to step 9704 to determine if thereare multiple parts in the build space.

FIG. 18 provides a diagram showing a full support region 800, an angularsupport region 802 and a fill support region 804 for a part 806. Fullsupport region 800 includes areas outside of the part that are withinsilhouette boundary 810 of the part. Angular support region 802 includesareas that are within an angle 812 of point 814 of the part atsilhouette boundary 810. Full support region 800, angular support region802 and fill support region 804 can each include different materialsand/or different modulating functions from each other. In general, fullsupport region 800 will include materials and modulating functions thatprovide more support than fill support region 804. Angular supportregion 802 can include the same materials and modulating functions asfull support region 800 or may include different materials or modulatingfunctions.

FIG. 19 provides a flow diagram for performing step 9706 of FIG. 17 inwhich a material identification is performed with respect to a singlepart in the build space. At step 900 of FIG. 19 , point features for theclosest portion of the part to the voxel are retrieved from pointfeatures 9209 by material selection unit 9226. These point features areused to identify a set of material selection rules 9220 to be used whendetermining the material for voxels near the part portion. In accordancewith one embodiment, the set of material selection rules contains aseparate material selection rule 9224 for each of a set of ranges 9222of distance field values. In accordance with some embodiments, eachmaterial selection rule is one of a static rule that assigns a samematerial at a same density across the entire range of distance fieldvalues, and a modulating rule that varies the composition of the voxelsacross the range of distance field values.

At step 902, material selection unit 9226 retrieves the sets of materialselection rules identified in the point features and at step 904 usesthe distance field and the region designation (i.e. direct supportregion, filler region), if any, for the voxel to identify which materialselection rule to use.

In accordance with one embodiment, ranges 9222 describe bands ofmaterials relative to the STL boundary where each band has an associatedmaterial selection rule 9224. Within a range 9222, the materialselection rule 9224 can simply designate a single material to use withinthe range. For other ranges, the material selection rule 9224 consistsof one or more functions that are evaluated to produce output values.Groups of output values are assigned to different material designations.For example, some output values of the functions can be assigned to afirst material while other output values are assigned to a secondmaterial. Other times, one group of output values is assigned to amaterial while the remaining output values are assigned to no material,meaning that no material is placed in the voxel. For example, inaccordance with one embodiment, the following bands and functions aredefined:

for a>D>b

f(x,D)>0→material designation 1

f(x,D)<0→material designation 2

f(x,D)=0→material designation 3

for b>D>0

g(x,D)>0→material designation 4

g(x,D)<0→material designation 5

g(x,D)=0→material designation 6

for D=0

h(x)>0→material designation 7

h(x)<0→material designation 8

h(x)=0→material designation 9

or 0>D>−c and direct support

k(x,D)>0→material designation 10

k(x,D)<0→material designation 11

k(x,D)=0→material designation 12

for 0>D>−c and angled support

l(x,D)>0→material designation 13

l(x,D)<0→material designation 14

l(x,D)=0→material designation 15

for 0>D>−c and nonshine

m(x,D)>0→material designation 16

m(x,D)<0→material designation 17

m(x,D)=0→material designation 18

for 0>D>−c and shine

n(x,D)>0→material designation 19

n(x,D)<0→material designation 20

n(x,D)=0→material designation 21

for −c>D>−d and direct support

o(x,D)>0→material designation 21

o(x,D)<0→material designation 22

o(x,D)=0→material designation 23

for −c>D>−d and angled support

p(x,D)>0→material designation 24

p(x,D)<0→material designation 25

p(x,D)=0→material designation 26

for −c>D>−d and otherwise

q(x,D)>0→material designation 27

q(x,D)<0→material designation 28

q(x,D)=0→material designation 29

where D is the distance field value, a, b, −c and −d are range valuesfor the distance field values, x is the three-dimensional location ofthe voxel in the build space, f(x,D), g(x,D), h(x,D), k(x,D), l(x,D),m(x,D), n(x,D), o(x,D), p(x,D), and q(x,D) are modulating functions andmaterial designations 1-29 are possible materials and no materials to beused for the voxel. Although listed as separate materials 1-29, thoseskilled in the art will recognize that one or more of the materialdesignations may be the same.

The modulating functions can be periodic or aperiodic functions of oneor more features of the voxel such as the voxel's position in the buildspace, or the distance field D for the voxel.

For periodic functions, the position in the build space or the distancefield or a combination of these two values can be used to control thefrequency of the periodic function, a temporal shift in the periodicfunction and/or the magnitude of the periodic function. The modulatingfunction can also be a noise function based on the voxel's position inthe build space or based on the distance field. In further embodiments,the modulating function is a combination of a periodic function and anoisy function. For example, in one embodiment, the periodic function isbased on both the position in the build space and the distance field andthe output of the periodic function is filtered by a noisy filter basedon the voxel's position in the build space. In a still furtherembodiment, the modulating function is the sum of the distance fieldvalue and a base periodic function of the voxel position in the buildspace.

In the examples above, three ranges of values for the functions havebeen described with three associated material designations. When themodulating function provides a constant value, only a single materialwill be identified producing a band of solid material across the rangeset by the distance field. In other embodiments, other ranges of valuesfor output of the modulating function are used allowing for any numberof materials to be used within the range of distance field values setfor the modulating function. In further embodiments, one or more of theranges of values for the modulating function can be associated withempty space resulting in no material being assigned to the voxel. Forexample, it is possible to assign a material when the output of themodulating function is greater than or equal to 0 and to assign an emptyspace to the voxel when the output of the modulating function is lessthan 0. This allows a porous band of material to be constructed with theporosity of the material changing as a function of the distance fieldand/or the position in the build space.

The frequency of the modulating function can change as a continuousfunction of the distance field or can be fixed at the value of thedistance field at the beginning or the end of the range of distancefields associated with the modulating function. Similarly, the amplitudeof the modulating function can similarly vary continuously as a functionof the distance field values or can be set to the value of the distancefield at the beginning or ending range of distance field valuesassociated with the modulating function.

As shown in the example set of material selection rules above, theselection of a material selection rule can also be based upon whetherthe voxel is located in a direct support region or an angled supportregion as designated for the voxel in step 9712 and 9716 above. Inaddition, shine maps 9208 can be consulted for the portion of the partclosest to the voxel to determine whether that portion of the part is tohave a particular shine level. This shine level can then be usedtogether with the distance field to select the material selection ruleto apply to the voxel.

Returning to FIG. 19 , at step 906, the distance field value of thevoxel and/or the build space position of the voxel are applied to theselected material selection rule to select a material or no material forthe voxel. In some embodiments, as shown above, the material selectionrule 9224 is a function of a feature of the voxel, such as the distancefield value or the build space position of the voxel, and the distancefield value and or the build space position of the voxel are applied tothe function to generate an output value that is then used to select thematerial or lack of material for the voxel.

If there is more than one part in the build space, a multipart materialselection is performed at step 9708 of FIG. 17 . FIG. 20 provides a flowdiagram of one method for performing a multipart material selection.

At step 1000, material selection unit 9226 accesses point features 9209to retrieve the features for the closest STL boundary points 9214 forthe multiple parts. These features are then used to determine whetherthe material selection rules designated for the STL boundary point areto be blended with the material selection rules for STL boundary pointsof other parts or whether a selection is to be made between the materialselection rules of the various parts so that only a single part'smaterial selection rules are used.

If only a single part's material selection rules are to be used, theprocess continues at step 1002 where one of the parts is selected usingthe closest STL boundary points of the various parts. In particular, thefeatures 9209 of the closest STL boundary points will indicate which ofthe parts is to be given priority when selecting a set of materialselection rules. After the part with priority has been selected at step1002, single part material selection is performed at step 1004 using theprocess described above for FIG. 19 .

FIG. 21 provides an example of a top cross-sectional view of a partconstructed using the single part construction process of FIG. 19 . InFIG. 21 , the part is defined by an STL boundary 1100 that is dividedinto two regions 1102 and 1104, each having respective features. Forregion 1102, three bands of material selection rules are defined outsideof the part and four bands of material selection rules are definedinside the part. In particular, outside of the STL boundary there is aband 1106 constructed by a modulating function that modulates betweenproducing two different materials resulting in a support area withstructure. Band 1108 includes an aperiodic modulating function thatprovides a constant amount of a single support material. Band 1110consists of an aperiodic modulating function that assigns an air gap tothe voxels in the band. Within the STL boundary, band 1112 isrepresented by an aperiodic modulating function that provides a constantdensity coating material. Band 1114 is described by a modulatingfunction that modulates between the coating of band 1112 and a corticalmaterial found in a cortical band 1116. Cortical band 1116 has a varyingthickness as indicated by wider thickness 1118 and narrower thickness1120. Thus the size of cortical band 1116 varies based on what is theclosest STL boundary point. Cortical band 1116 is described by anaperiodic modulating function that provides a constant intensitycortical material. Band 1122 is described by a noisy modulating functionthat modulates between the cortical material of band 1116 and a marrowmaterial. The noisy function increases the amount of marrow material asthe distance field increases.

Region 1104 contains bands 1106 and 1108 from the exterior of region1102 but only includes interior band 1122 from region 1102.

Returning to FIG. 20 , when the point features 9209 for the closest partpoints indicate that the material selection rules of two different partsare to be blended at step 1000, the process continues at step 1006. Instep 1006, at least two of the parts in the build space are selected.The number of parts that are selected is based on designations stored inpoint features 9209 for all of the parts in the build space. Suchfeatures can include threshold distance fields that require the voxel tobe within a certain distance of the STL boundary in order for the part'smaterial selection rules to be used during blending. In otherembodiments, certain point features 9209 will indicate that a part'smaterial selection rules are only to be blended when a certain number ofother parts are present in the build space.

At step 1008, material selection rules 9220 associated with the partsselected at step 1006 and identified in point features 9209 areretrieved. At step 1010, the respective distance field of the voxel andregion designation, if any, of the voxel relative to each part selectedat step 1006 are used to identify which material selection rules are tobe selected for blending. At step 1012, one or both of materials andmodulating functions of the selected material selection rules areblended or merged. In accordance with one embodiment, blending ormerging modulating functions involves weighting the modulating functionsusing the distance fields and summing or multiplying the weightedmodulating functions to form a merged function. The weighting is suchthat if a voxel is within two parts, the weight for a modulatingfunction of one of the parts increases as the distance field value forthat part increases. When the voxel is located outside of two parts, theopposite is true and the weighting for the modulating function relativeto a part decreases as the magnitude of the distance field for the partincreases. In other embodiments, the blending or merging is performed byusing a random function and selecting which material to apply based onwhether the output of the random function is above or below a threshold.The threshold is set as a function of the distance field for one of theparts, such that it becomes more likely that a material of a particularpart will be selected for the voxel as the distance field for that partincreases. This produces a merged area across the overlapping portionsof the two parts where the material content of the voxels changesgradually across the merged area.

After the material/modulating functions have been blended at step 1012,the distance fields for one or more of the parts are applied to theblended functions at step 1014 along with the build space region for thevoxel to produce a computed value that is then used to select thematerial for the voxel at step 1016.

FIG. 22 provides an example of multiple part material selection in whichselecting a single part at step 1002 removes interference between parts.At times, meshes 9202 for different parts will be described such thatthe parts overlap when the designer intended the parts to be separate.Such interference can be time consuming to remove. Under step 1002, suchinterference is automatically eliminated by selecting only one of theparts when a voxel is described by meshes 9202 as being in two differentpart.

In the example of FIG. 22 , there are two parts 1200 and 1202. Dottedlines 1204 indicate the STL boundary for part 1202 as described bymeshes 202 and solid line 1205 indicates the STL boundary for pat 1200.As shown in FIG. 22 , STL boundary 1204 is within part 1200 and as such,the description of the STL boundaries shows an interference betweenparts 1200 and 1202. By selecting a single part at step 1002, in thiscase, part 1200, it is possible to remove the interference described inthe meshes 202 to provide a new part boundary 1206 (shown in bold) forpart 1202. Thus, in interference area 1208 where parts 1200 and 1202overlap, the selection of part 1200 at step 1002 effectively shiftsboundary 1204 to boundary 1206 for part 1202, thereby eliminating theinterference between the two parts.

FIG. 23 provides an example of blending two modulating functions using adistance field. In FIG. 23 , a gyroid modulating field shown in section1300 is blended with a Schwartz lattice as shown in section 1302 acrossa blending area 1304. In the blending of FIG. 23 , the two modulatingfunctions are weighted such that as the distance field from the STLboundary defining the gyroid increases, the gyroid modulating functionis weighted less and the Schwartz lattice is weighted more. Thisproduces a smooth transition from the gyroid lattice to the Schwartzlattice.

FIG. 24 shows the blending of parts material across an overlappedportion of two parts 1400 and 1402. In blended region 1404, the amountof material associated with part 1400 gradually decreases and the amountof material associated with part 1402 gradually increases along theextent from part 1400 to part 1402. Thus, as the magnitude of thedistance field for part 1400 decreases, the amount of part material forpart 1400 decreases in the blended region. Similarly, as the distancefield for part 1402 decreases along the blended region 1404, the amountof material associated with part 1402 decreases in the blended region.

Returning to FIG. 11 , after the material for a voxel has beendetermined at step 9118, the process determines if more voxels need tobe processed at step 9120. If there are more voxels in the currentslice, a new voxel is selected by returning to step 9112 and steps 9114,9116, and 9118 are repeated for the new voxel. When all of the voxelsfor the current slice have been processed at step 9120, the materialbitmap for the slice is complete and is output as material bitmap 9228.At step 9122, the process determines if there are more slices. If thereare more slices, slice computations process 9210 moves up one slice atstep 9124 and then returns to step 9106 to perform rendering operationsin the +Z direction for the new slice. Steps 9108, 9110, 9112, 9114,9116, 9118, and 9120 are then repeated for the new slice. Note thatalthough the selection of materials for each voxel in a slice has beenindicated as being performed before the +Z-buffer is loaded for eachslice, and other embodiments, the rendering operation is performed inthe +Z direction for each slice before determining materials for thevoxels in any of the slices. After the +Z-buffers have been loaded foreach slice, each slice is processed in turn by material selection unit9226 to identify the material for each voxel in the slice.

After material bitmaps 9228 have been formed for each slice, a printconversion unit 9230 performs a print conversion step 9126 to form printinstructions 9237. This print conversion step can be as simple astransferring material bitmaps 9228 as bitmaps 9232. In otherembodiments, material bitmaps 9228 are converted into toolpaths 9234that describe how a print head should be moved along a slice to depositmaterial. In one embodiment, a marching square algorithm is used toidentify toolpaths 9234 from bitmaps 9228. In a further embodiment, thematerial bitmaps 9228 for each slice is converted into meshes 9236 thatprovide three-dimensional descriptions of part boundaries. Such meshescan be applied as input to other printers or as input to CAD systems. Inone embodiment, a marching cubes algorithm is used to identify meshes9236 from bitmaps 9228. After the material bitmaps 9228 have beenconverted into print instructions 9237, the print instructions arecommunicated through communication adapter 9092 so that the part can bemanufactured at step 9128.

The embodiments above can thus load a CAD model onto a GPU, use the GPUto compute signed distance fields for every voxel, assign a material toeach voxel based on the signed distance fields, and outputs imagessuitable for printing.

The various embodiments compute several different distance fields foreach voxel in a slice, including the 3D Euclidean distance to theclosest point of the CAD model, the 2D distance to the closest point onthe cross section of the model in the slice, and the 2D distance to thesilhouette of the model.

Each distance field may include feature transform information for thevoxel, where the feature is the source point on the model used to recordthe distance reported for that voxel in the distance field. Featuretransforms may include identifiers of the body or mesh, surface texturecoordinates, surface normal, and position of the source point.

In accordance with one embodiment, the material assignment to each voxelbecomes a function of the distance information and user-controlledparameters.

The distance metric may be Euclidean norm or a different norm, such as aL^(p) or a chamfer norm.

The computations on the GPU use the Z-buffer to produce the depthcomponent of distance in planar projections.

The computations on the GPU use a distance transform to compute 3Ddistance, 2D sectional distance, or distance from self-supportingregions.

The distance fields can be used to modulate carrier functions, such asimplicit lattices and noise functions, to produce structures withvarying compliance and porosity.

The distance fields can be used to perform offsetting and booleanoperations.

The distance fields can be used to smoothly interpolate from one CADmodel to another.

The distance fields can be used to adjust interferences and gaps betweenparts.

The distance fields can be used to create variable thickness offsets.

The distance fields can be combined with surface and volumetric texturesto create layered and rippled textures.

The distance fields can be combined with voxel data, such as CAT scanand MRI data to produce models with volumetrically varying materialproperties.

The results can be saved as bitmap images for use for printers that useimages.

The results can be traced into vector contours for 3D printers that usetoolpaths.

The results can be reconstructed into 3D solid models.

The computations on the GPU use convolution or sampling to compute 2Dsectional distance, silhouette distance, and the planar components of 3Ddistance. In accordance with one embodiment, these computations areperformed iteratively to recursively compute distances efficiently.

The distance information can be used to modulate explicit and implicitfunctions, such as those describing lattices, to produce structures withvarying bulk material properties such as compliance and porosity. Thefunctions may describe shapes, voids in shapes, textures, varyingmaterial properties, and beam-like, honeycomb, and mixed topologylattices.

In the embodiments described below, there are CPU and GPU components.The CPU component:

1. Reads mesh data, textures, and slicing parameter data.

2. Sends the mesh data and related information to the GPU.

3. Provides a user interface to view and interact with the slice data.

4. Saves images created on the GPU to disk.

The GPU component:

1. Produces depth information about the model using the Z-buffer.

2. Combines the depth information into structures with differentdistance information.

3. Calculates the composition of each voxel using the distanceinformation.

4. Includes libraries for calculating lattices, performing solidmodeling operations, calibrating color, etc.

In one embodiment, the various embodiments are implemented usingJavascript, Node.js and Electron for the CPU and OpenGL ES for the GPUcode. Other embodiments are implemented using C # on .NET or Mono andOpenGL 3.3.

Additional Applications:

1. Recording texture, normal, and other geometric information(collectively, “Surface Information”) along with distance informationwhile computing the distance field.

2. Using Surface Information and a bitmap to choose a color to assign tothe model.

3. Using Surface Information and a bitmap to choose a material amongseveral possible materials, possibly using dithering.

4. Using Surface Information and a bitmap to offset the model to createa physical displacement map.

5. Using Surface Information and a bitmap to change the glossiness ofthe printed result.

6. Using Surface Information and a bitmap to change the surface finishof the printed result.

7. Using Surface Information and a bitmap to change the hardness of thematerial closest to the value of the texture on the surface.

8. Using Surface Information and a bitmap to change the transparency ofthe material closest to the value of the texture on the surface.

9. Using Surface Information and a bitmap to change the mechanicalproperties, such as stiffness, of the material closest to the value ofthe texture on the surface.

10. Using Surface Information and a bitmap to alter the presence ofsupport material on the surface of a part.

11. Using Surface Information and a bitmap to modulate implicitfunctions used in the volume of the part or in support structuressurrounding it.

12. Using Surface Information and several bitmaps to produce severaldisplacement maps that can be combined via Boolean operations to createsurface textures that include overhang.

13. Using Surface Information and several bitmaps with transparentmaterial to produce lenticular (animated or 3D) surface effects.

14. Using any combination of 2-9 together.

15. The use of 3D volumetric textures with distance field information tochange material location composition, possibly in combination with 2-9.

In FIG. 9A, computer 9066 was shown as a host for a single stand-aloneadditive manufacturing system. Alternatively, as shown in FIG. 9B,computer 9066 may function as a local server for multiple additivemanufacturing systems 9068. For example, systems 9068 may be part of anoverall production system to manufacture consumer or industrial OEMproducts. As such, computer 9066 and may perform the steps of FIG. 11and may also perform one or more additional processing steps, such asrun-time estimates, printer queuing, post-processing queuing, and thelike. As shown, computer 9066 may optionally include one or more servers9072 and one or more dedicated host computers 9074 associated with eachsystem 9068, where server 9072 may communicate with host computers 9074over one or more communication lines 9076 (e.g., network lines).

In yet another embodiment, as shown in FIG. 9C computer 9066 and systems9068 may be part of an on-demand service center. In this embodiment,computer 9066 may function as a cloud-based server, for example, wherecustomers may submit digital models (e.g., STL data files) from theirpersonal computers 9078 over the Internet via one or more network orcommunication lines 9080 to computer 9066 (e.g., to server 9072).

In this application, computer 9066 may perform the steps of FIG. 11 aswell as one or more additional processing steps, such as supportmaterial volume calculations, price quoting, run-time estimates, printerqueuing, post-processing queuing, shipping estimates, and the like. Forexample, in some embodiments, computer 9066 may generate supportmaterial volume calculations, build times, and price quoting asdiscussed in Nehme et al., U.S. Pat. No. 8,818,544. The service centermay also include one or more post-printing stations (e.g., supportremoval stations, surface finishing stations, shipping stations, and thelike, not shown), where computer 9066 may also optionally communicatewith the post-printing station(s).

According to some embodiments of the invention there is provided amethod comprising: selecting a voxel in a three-dimensional build space;for the selected voxel, determining a distance field value relative to athree-dimensional part in the three-dimensional build space; using thedistance field value to select at least one material selection rule;applying a feature of the voxel to the at least one material selectionrule to identify a material designation for the voxel, wherein thematerial designation indicates no material is to be placed at the voxelwhen the material selection rule identifies no material for the voxeland wherein the material designation indicates at least one material isto be placed at the voxel when the at least one material selection ruleidentifies the at least one material for the voxel; and outputting thematerial designation for the voxel for use in building thethree-dimensional part using an additive manufacturing system.

According to some embodiments of the invention the method uses theshortest distance to determine the distance field value.

According to some embodiments of the invention the distance field valueis in a first range of values if the voxel is outside of the part, is ina second range of values if the voxel is within the part and is asingular value if the voxel is on the boundary of the part.

According to some embodiments of the invention the voxel forms part of alattice structure.

According to some embodiments of the invention the using the firstdistance field value and the second distance field value to set amaterial designation comprises using the first distance field value toidentify a first function, using the second distance field value toidentify a second function, merging the first function with the secondfunction to form a merged function, and using the merged function to setthe material designation.

According to some embodiments of the invention the first functiondescribes a first lattice pattern, the second function describes asecond lattice pattern and the merged function describes a transitionlattice that transitions from the first lattice pattern to the secondlattice pattern over a merge area.

According to some embodiments of the invention the using the firstdistance field value and the second distance field value to set amaterial designation comprises using the first distance field value todetermine that the voxel is inside the first three-dimensional part,using the second distance field value to determine that the voxel isinside the second three-dimensional part and setting the materialdesignation for the voxel to a material set for the firstthree-dimensional part instead of a second material set for the secondthree-dimensional part.

According to some embodiments of the invention the setting the materialdesignation for the voxel to the material set for the firstthree-dimensional part instead of the second material set for the secondthree-dimensional part comprises identifying a closest portion of thefirst three-dimensional part to the voxel, retrieving a featureassociated with the closest portion, and using the feature to decide toset the material designation for the voxel to the material set for thefirst three-dimensional part.

Example 2 Generation of Distance Map Using Linear Scans

FIGS. 25A and 25B show an input image (FIG. 25A), and a correspondingdistance map (FIG. 25B) generated by two independent linear scans alongthe x and y axes according to embodiments of the present invention. Theimage size of FIG. 25A was 2176×1040 pixels (about 2.26 megapixels), andthe processing time for generating the map in FIG. 25B, using a singlethread image processing, was about 80 ms, namely about 28 megapixels persecond.

The objective function that was used was the objective function inEQ. 1. The process used is explained in greater detail with reference toFIGS. 26A and 26B. The curve in FIG. 26A corresponds to the formeddistance map after a particular iteration. For picture-element p,picture-element q is such that the objective function F (EQ. 1) isminimal. The thick line exemplifies all picture-element p for which theobjective function F is minimal.

It is appreciated that for a particular axis (e.g., the x axis) thefunction F is quadratic in the coordinate along the axis (e.g., the xcoordinate), and therefore corresponds to a set of parabolas in the formP_(i)(x)=g_(i)(x)+(x−i)², where for the case of a scan along the x axis,the subscript i represents a column number. An exemplified set ofparabolas is illustrated in FIG. 26B. During the scan, the map-elementsare updated by selecting the lowest parabola. In FIG. 26B, the parabolasfor column Nos. 0, 47, 109 and 256 were already selected. Two parabolasare illustrated for column 259: P_(259(a)) and P_(259(b)), and thelowest parabola P_(259(a)) was selected for this column. Theintersecting points between the parabolas of column 259 and column 256are shown by filled circles.

FIGS. 27A-E show the result of the method when applied to athree-dimensional image having 4 squares at ground level (height 0) anda horizontal bar along the x axis, one voxel in width, at a distance of10 voxels above the ground level. FIG. 27A shows the slice image, FIGS.27B and 27C show the edges and height map, FIG. 27D shows the resultafter a scan along the x axis, and FIG. 27E shows the distance mapobtained after a scan along the x axis and a scan along the y axis.

Example 3 Generation of Closest Point Map Using Linear Scans

A method similar to the method described in Example 2 can also be usedfor generating a closest point map. A graphical illustration of such amap is shown in FIG. 28 , where each point of the object (the objectbeing a discrete set of points in this simplified example) is associatedwith a different color, and where all points that are closest to aparticular point of the object are shown using the color associated withthe particular point. The object's points are emphasized as filledtriangles.

Although the invention has been described in conjunction with specificembodiments thereof, it is evident that many alternatives, modificationsand variations will be apparent to those skilled in the art.Accordingly, it is intended to embrace all such alternatives,modifications and variations that fall within the spirit and broad scopeof the appended claims.

All publications, patents and patent applications mentioned in thisspecification are herein incorporated in their entirety by referenceinto the specification, to the same extent as if each individualpublication, patent or patent application was specifically andindividually indicated to be incorporated herein by reference. Inaddition, citation or identification of any reference in thisapplication shall not be construed as an admission that such referenceis available as prior art to the present invention. To the extent thatsection headings are used, they should not be construed as necessarilylimiting.

It is the intent of the applicant(s) that all publications, patents andpatent applications referred to in this specification are to beincorporated in their entirety by reference into the specification, asif each individual publication, patent or patent application wasspecifically and individually noted when referenced that it is to beincorporated herein by reference. In addition, citation oridentification of any reference in this application shall not beconstrued as an admission that such reference is available as prior artto the present invention. To the extent that section headings are used,they should not be construed as necessarily limiting. In addition, anypriority document(s) of this application is/are hereby incorporatedherein by reference in its/their entirety.

What is claimed is:
 1. A method of rendering data for addressable dispensing of material over a working surface, the method comprising: receiving input image data arranged grid-wise over a grid of a plurality of picture-elements; generating an initial map describing a distance field perpendicular to the working surface and having a plurality of map-elements each storing distance information corresponding to one picture-element; for each picture-element of at least a portion of said picture-elements: linearly scanning said map independently along a first axis and along a second axis, and updating a respective map-element based on values of map-elements visited during said scan.
 2. The method of claim 1, wherein said generating said initial map is by a first processor, and said scanning and said updating is by a second processor.
 3. The method of claim 2, wherein said first processor is a graphics processing unit (GPU) and said wherein said second processor is a central processing unit (CPU) of the same computer system.
 4. The method according to claim 1, wherein said first and said second axes are orthogonal axes.
 5. The method according to claim 1, wherein said distance information is according to a taxicab metric.
 6. The method according to claim 1, wherein said distance information is according to a Euclidian metric.
 7. The method according to claim 1, wherein said grid is a two-dimensional grid describing coordinates of picture-elements of a two-dimensional image.
 8. The method of claim 7, wherein said generating said initial map comprises setting one of two predetermined values for each map-element, wherein a first value of said two predetermined values is set when a respective picture-element is on a boundary of an object in said image, and a second value of said two predetermined values is set otherwise.
 9. The method according to claim 1, further comprising, for each picture-element of at least a portion of said picture-elements, designating a material to be dispensed based at least in part on a respective map-element, generating dispensing instructions readable by a controller of a printer based on said designation and transmitting said dispensing instructions to said controller.
 10. The method according to claim 1, wherein said grid is a three-dimensional grid describing coordinates of picture-elements of a three-dimensional image.
 11. The method of claim 10, wherein said generating said initial map comprises setting, for each map-element, a value corresponding to a height of a respective picture-element in said image, said height being along a third axis perpendicular to both said first and said second axes.
 12. The method according to claim 10, further comprising, for each picture-element of at least a portion of said picture-elements, designating a material to be dispensed based at least in part on a respective map-element, generating dispensing instructions readable by a controller of a printer, based on said designation, and transmitting said dispensing instructions to said controller.
 13. The method according to claim 10, further comprising slicing said input image data, wherein said generating, said scanning and said updating are executed separately for each slice, to form a sub-map corresponding only to picture-element of said slice.
 14. The method according to claim 10, further comprising, for at least one sub-map, designating, for each picture-element of at least a portion of picture-elements corresponding to said sub-map, a material to be dispensed based at least in part on a respective map-element of said sub-map, generating dispensing instructions readable by a controller of a printer based on said designation, and transmitting said dispensing instructions to said controller.
 15. The method according to claim 14, wherein said dispensing instructions comprise a material bitmap having a plurality of bitmap-elements, each storing information pertaining to a material to be dispensed, and the method further comprises purging said sub-map from a memory following said generation of said material bitmap.
 16. The method according to claim 1, wherein said designating is according to a modulating function.
 17. A method of additive manufacturing an object, the method comprising: executing the method according to claim 12; and dispensing and solidifying a plurality of materials based on said dispensing instructions to sequentially form a plurality of hardened layers in a configured pattern corresponding to a shape of an object.
 18. A system for rendering data for addressable dispensing of material over a working surface, the system comprising: an input circuit for receiving input image data arranged grid-wise over a plurality of picture-elements; a first processor configured for generating an initial map describing a distance field perpendicular to the working surface and having a plurality of map-elements each storing distance information corresponding to one picture-element; and a second processor configured for linearly scanning said map, independently along a first axis and along a second axis, for each picture-element of at least a portion of said picture-elements, and for updating a respective map-element based on values of map-elements visited during said scan.
 19. The system of claim 18, wherein said first processor is a graphics processing unit (GPU) and said wherein said second processor is a central processing unit (CPU) of the same computer system.
 20. A system for three-dimensional printing of an object, comprising: the system according to claim 18; a three-dimensional fabrication apparatus having a plurality of dispensing heads configured to dispense building materials; a controller designed and constructed to receive said dispensing instructions and to operate said dispensing heads according to said dispensing instructions. 